Module: Jade::Frontend::SemanticAnalysis::MemberAccess
- Extended by:
- Helper, MemberAccess
- Included in:
- MemberAccess
- Defined in:
- lib/jade/frontend/semantic_analysis/member_access.rb
Overview
Lowers a MemberAccess chain into either a QualifiedAccess (when the prefix resolves to an imported module alias) or a RecordAccess (when it’s field access on a value expression).
Instance Method Summary collapse
Methods included from Helper
analyze_duplicate_fields, analyze_in_parallel, analyze_in_sequence, analyze_node, bind, collect_vars, lookup, validate_type_symbol
Instance Method Details
#analyze(node, registry, scope, entry) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jade/frontend/semantic_analysis/member_access.rb', line 11 def analyze(node, registry, scope, entry) node => AST::MemberAccess(target:) qualified_names = collect_qualified_names(node) if qualified_names *path, access = qualified_names case resolve_qualified_access(path, node, registry, entry) in Ok(symbol) new_node = AST::QualifiedAccess[*node.deconstruct].with(symbol:) Result[new_node, [], scope] in Err(error) Result[node, [error], scope] end else target_r = analyze_node(target, registry, scope, entry) new_node = AST::RecordAccess[*node.with(target: target_r.node).deconstruct] Result[new_node, target_r.errors, scope] end end |