fluidattacks-blends-domain 0.44.1

Blends functional core: pure AST graph to syntax graph (no_std)
Documentation
use super::build_reference_expression;
use crate::ast::node_utils::AstNodeAndId;
use crate::syntax::_node_builders::languages::rust::tests_utils::{find_node, rust_ast_graph};
use crate::syntax::core_nodes::{
    CoreSyntaxNode, CoreSyntaxNodeWithId, ReferenceExpression, StringLiteral,
};
use crate::NodeId;

fn mock_node(kind: &str) -> CoreSyntaxNode {
    CoreSyntaxNode::StringLiteral(StringLiteral {
        value: format!("mock: {kind}"),
    })
}
fn mock_build((node, n_id): AstNodeAndId) -> CoreSyntaxNodeWithId {
    (mock_node(&node.kind), n_id)
}

fn build(source: &str) -> ReferenceExpression {
    let graph = rust_ast_graph(source);
    let node = find_node(&graph, "reference_expression");
    build_reference_expression(&graph, node, |p| Ok(mock_build(p))).unwrap()
}

const SOURCE: &str = include_str!("case_1.test.rs");

#[test]
fn builds_reference_1() {
    let expected = ReferenceExpression {
        value: (mock_node("integer_literal"), NodeId(16)),
        is_mutable: false,
        is_raw: false,
    };
    assert_eq!(build(SOURCE), expected);
}

const SOURCE_2: &str = include_str!("case_2.test.rs");

#[test]
fn builds_reference_2() {
    let expected = ReferenceExpression {
        value: (mock_node("identifier"), NodeId(23)),
        is_mutable: true,
        is_raw: false,
    };
    assert_eq!(build(SOURCE_2), expected);
}

const SOURCE_3: &str = include_str!("case_3.test.rs");

#[test]
fn builds_reference_3() {
    let expected = ReferenceExpression {
        value: (mock_node("call_expression"), NodeId(18)),
        is_mutable: false,
        is_raw: true,
    };
    assert_eq!(build(SOURCE_3), expected);
}
const SOURCE_4: &str = include_str!("case_4.test.rs");
#[test]
fn builds_reference_4() {
    let expected = ReferenceExpression {
        value: (mock_node("identifier"), NodeId(24)),
        is_mutable: true,
        is_raw: true,
    };
    assert_eq!(build(SOURCE_4), expected);
}