Module: Jade::Frontend::SemanticAnalysis

Extended by:
SemanticAnalysis
Included in:
SemanticAnalysis
Defined in:
lib/jade/frontend/semantic_analysis.rb,
lib/jade/frontend/semantic_analysis/body.rb,
lib/jade/frontend/semantic_analysis/list.rb,
lib/jade/frontend/semantic_analysis/error.rb,
lib/jade/frontend/semantic_analysis/tuple.rb,
lib/jade/frontend/semantic_analysis/assign.rb,
lib/jade/frontend/semantic_analysis/helper.rb,
lib/jade/frontend/semantic_analysis/lambda.rb,
lib/jade/frontend/semantic_analysis/case_of.rb,
lib/jade/frontend/semantic_analysis/literal.rb,
lib/jade/frontend/semantic_analysis/grouping.rb,
lib/jade/frontend/semantic_analysis/keyed_call.rb,
lib/jade/frontend/semantic_analysis/module_node.rb,
lib/jade/frontend/semantic_analysis/char_literal.rb,
lib/jade/frontend/semantic_analysis/if_then_else.rb,
lib/jade/frontend/semantic_analysis/pattern_list.rb,
lib/jade/frontend/semantic_analysis/record_field.rb,
lib/jade/frontend/semantic_analysis/function_call.rb,
lib/jade/frontend/semantic_analysis/member_access.rb,
lib/jade/frontend/semantic_analysis/record_access.rb,
lib/jade/frontend/semantic_analysis/record_update.rb,
lib/jade/frontend/semantic_analysis/case_of_branch.rb,
lib/jade/frontend/semantic_analysis/implementation.rb,
lib/jade/frontend/semantic_analysis/pattern_record.rb,
lib/jade/frontend/semantic_analysis/record_literal.rb,
lib/jade/frontend/semantic_analysis/pattern_binding.rb,
lib/jade/frontend/semantic_analysis/pattern_literal.rb,
lib/jade/frontend/semantic_analysis/pattern_wildcard.rb,
lib/jade/frontend/semantic_analysis/qualified_access.rb,
lib/jade/frontend/semantic_analysis/type_declaration.rb,
lib/jade/frontend/semantic_analysis/import_declaration.rb,
lib/jade/frontend/semantic_analysis/struct_declaration.rb,
lib/jade/frontend/semantic_analysis/variable_reference.rb,
lib/jade/frontend/semantic_analysis/error/missing_field.rb,
lib/jade/frontend/semantic_analysis/error/non_task_port.rb,
lib/jade/frontend/semantic_analysis/error/unknown_field.rb,
lib/jade/frontend/semantic_analysis/pattern_constructor.rb,
lib/jade/frontend/semantic_analysis/variant_declaration.rb,
lib/jade/frontend/semantic_analysis/function_declaration.rb,
lib/jade/frontend/semantic_analysis/constructor_reference.rb,
lib/jade/frontend/semantic_analysis/error/duplicate_field.rb,
lib/jade/frontend/semantic_analysis/error/shadowing_error.rb,
lib/jade/frontend/semantic_analysis/interface_declaration.rb,
lib/jade/frontend/semantic_analysis/keyed_call/validation.rb,
lib/jade/frontend/semantic_analysis/error/circular_extends.rb,
lib/jade/frontend/semantic_analysis/error/module_not_found.rb,
lib/jade/frontend/semantic_analysis/error/nested_task_port.rb,
lib/jade/frontend/semantic_analysis/error/value_not_exposed.rb,
lib/jade/frontend/semantic_analysis/implementation_function.rb,
lib/jade/frontend/semantic_analysis/error/type_args_mismatch.rb,
lib/jade/frontend/semantic_analysis/error/undefined_variable.rb,
lib/jade/frontend/semantic_analysis/error/variable_not_found.rb,
lib/jade/frontend/semantic_analysis/error/type_param_required.rb,
lib/jade/frontend/semantic_analysis/interop_import_declaration.rb,
lib/jade/frontend/semantic_analysis/error/constant_not_callable.rb,
lib/jade/frontend/semantic_analysis/error/constructor_not_found.rb,
lib/jade/frontend/semantic_analysis/error/orphan_implementation.rb,
lib/jade/frontend/semantic_analysis/error/unbound_type_variable.rb,
lib/jade/frontend/semantic_analysis/error/duplicate_record_field.rb,
lib/jade/frontend/semantic_analysis/error/missing_exposing_clause.rb,
lib/jade/frontend/semantic_analysis/error/invalid_list_rest_pattern.rb,
lib/jade/frontend/semantic_analysis/error/kwargs_on_non_constructor.rb,
lib/jade/frontend/semantic_analysis/error/predicate_must_return_bool.rb,
lib/jade/frontend/semantic_analysis/error/predicate_name_not_allowed.rb,
lib/jade/frontend/semantic_analysis/error/unused_interface_type_param.rb,
lib/jade/frontend/semantic_analysis/error/duplicate_function_declaration.rb,
lib/jade/frontend/semantic_analysis/error/missing_extends_implementation.rb,
lib/jade/frontend/semantic_analysis/error/missing_implementation_function.rb,
lib/jade/frontend/semantic_analysis/error/unknown_implementation_function.rb,
lib/jade/frontend/semantic_analysis/error/constructor_pattern_arity_mismatch.rb

Defined Under Namespace

Modules: Assign, Body, CaseOf, CaseOfBranch, CharLiteral, ConstructorReference, Error, FunctionCall, FunctionDeclaration, Grouping, Helper, IfThenElse, Implementation, ImplementationFunction, ImportDeclaration, InterfaceDeclaration, InteropImportDeclaration, KeyedCall, Lambda, List, Literal, MemberAccess, ModuleNode, PatternBinding, PatternConstructor, PatternList, PatternLiteral, PatternRecord, PatternWildcard, QualifiedAccess, RecordAccess, RecordField, RecordLiteral, RecordUpdate, StructDeclaration, Tuple, TypeDeclaration, VariableReference, VariantDeclaration Classes: Result, Scope

Instance Method Summary collapse

Instance Method Details

#analyze(entry, registry) ⇒ Object



47
48
49
50
51
# File 'lib/jade/frontend/semantic_analysis.rb', line 47

def analyze(entry, registry)
  initialize_scope(entry)
    .then { analyze_node(entry.ast, registry, it, entry) }
    .then { it.errors.any? ? Err[it.errors] : Ok[entry.with(ast: it.node)] }
end

#analyze_entry(entry, registry) ⇒ Object



58
59
60
# File 'lib/jade/frontend/semantic_analysis.rb', line 58

def analyze_entry(entry, registry)
  analyze(entry, registry)
end

#analyze_repl(ast, registry, scope, entry) ⇒ Object



53
54
55
56
# File 'lib/jade/frontend/semantic_analysis.rb', line 53

def analyze_repl(ast, registry, scope, entry)
  analyze_node(ast, registry, scope, entry)
    .then { it.errors.any? ? Err[it.errors] : Ok[[it.node, it.scope]] }
end