class TypeProf::Core::AST
Public Class Methods
create_node(raw_node, lenv, use_result = true)
click to toggle source
: (untyped, TypeProf::Core::LocalEnv
, ?bool) -> TypeProf::Core::AST::Node
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 22 def self.create_node(raw_node, lenv, use_result = true) while true case raw_node.type when :parentheses_node raw_node = raw_node.body when :implicit_node raw_node = raw_node.value else break end end case raw_node.type # definition when :statements_node then StatementsNode.new(raw_node, lenv, use_result) when :module_node then ModuleNode.new(raw_node, lenv, use_result) when :class_node then ClassNode.new(raw_node, lenv, use_result) when :singleton_class_node then SingletonClassNode.new(raw_node, lenv, use_result) when :def_node then DefNode.new(raw_node, lenv, use_result) when :alias_method_node then AliasNode.new(raw_node, lenv) when :undef_node then UndefNode.new(raw_node, lenv) # control when :and_node then AndNode.new(raw_node, lenv) when :or_node then OrNode.new(raw_node, lenv) when :if_node then IfNode.new(raw_node, lenv) when :unless_node then UnlessNode.new(raw_node, lenv) when :case_node then CaseNode.new(raw_node, lenv) when :case_match_node then CaseMatchNode.new(raw_node, lenv) when :while_node then WhileNode.new(raw_node, lenv) when :until_node then UntilNode.new(raw_node, lenv) when :break_node then BreakNode.new(raw_node, lenv) when :next_node then NextNode.new(raw_node, lenv) when :redo_node then RedoNode.new(raw_node, lenv) when :return_node then ReturnNode.new(raw_node, lenv) when :begin_node then BeginNode.new(raw_node, lenv) when :retry_node then RetryNode.new(raw_node, lenv) when :rescue_modifier_node then RescueModifierNode.new(raw_node, lenv) # constants when :constant_read_node, :constant_path_node ConstantReadNode.new(raw_node, lenv) when :constant_write_node, :constant_path_write_node ConstantWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv) when :constant_operator_write_node read = ConstantReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) when :constant_or_write_node read = ConstantReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) when :constant_and_write_node read = ConstantReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) when :constant_path_operator_write_node read = ConstantReadNode.new(raw_node.target, lenv) rhs = OperatorNode.new(raw_node, read, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) when :constant_path_or_write_node read = ConstantReadNode.new(raw_node.target, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) when :constant_path_and_write_node read = ConstantReadNode.new(raw_node.target, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) ConstantWriteNode.new(raw_node, rhs, lenv) # variables when :local_variable_read_node LocalVariableReadNode.new(raw_node, lenv) when :local_variable_write_node LocalVariableWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv) when :local_variable_operator_write_node read = LocalVariableReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) LocalVariableWriteNode.new(raw_node, rhs, lenv) when :local_variable_or_write_node read = LocalVariableReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) LocalVariableWriteNode.new(raw_node, rhs, lenv) when :local_variable_and_write_node read = LocalVariableReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) LocalVariableWriteNode.new(raw_node, rhs, lenv) when :instance_variable_read_node InstanceVariableReadNode.new(raw_node, lenv) when :instance_variable_write_node InstanceVariableWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv) when :instance_variable_operator_write_node read = InstanceVariableReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) InstanceVariableWriteNode.new(raw_node, rhs, lenv) when :instance_variable_or_write_node read = InstanceVariableReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) InstanceVariableWriteNode.new(raw_node, rhs, lenv) when :instance_variable_and_write_node read = InstanceVariableReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) InstanceVariableWriteNode.new(raw_node, rhs, lenv) when :class_variable_read_node ClassVariableReadNode.new(raw_node, lenv) when :class_variable_write_node ClassVariableWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv) when :class_variable_operator_write_node read = ClassVariableReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) when :class_variable_or_write_node read = ClassVariableReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) ClassVariableWriteNode.new(raw_node, rhs, lenv) when :class_variable_and_write_node read = ClassVariableReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) ClassVariableWriteNode.new(raw_node, rhs, lenv) when :global_variable_read_node GlobalVariableReadNode.new(raw_node, lenv) when :global_variable_write_node GlobalVariableWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv) when :global_variable_operator_write_node read = GlobalVariableReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) GlobalVariableWriteNode.new(raw_node, rhs, lenv) when :global_variable_or_write_node read = GlobalVariableReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) GlobalVariableWriteNode.new(raw_node, rhs, lenv) when :global_variable_and_write_node read = GlobalVariableReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) GlobalVariableWriteNode.new(raw_node, rhs, lenv) when :numbered_reference_read_node RegexpReferenceReadNode.new(raw_node, lenv) when :back_reference_read_node RegexpReferenceReadNode.new(raw_node, lenv) # assignment targets when :index_operator_write_node read = IndexReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) IndexWriteNode.new(raw_node, rhs, lenv) when :index_or_write_node read = IndexReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) IndexWriteNode.new(raw_node, rhs, lenv) when :index_and_write_node read = IndexReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) IndexWriteNode.new(raw_node, rhs, lenv) when :call_operator_write_node read = CallReadNode.new(raw_node, lenv) rhs = OperatorNode.new(raw_node, read, lenv) CallWriteNode.new(raw_node, rhs, lenv) when :call_or_write_node read = CallReadNode.new(raw_node, lenv) rhs = OrNode.new(raw_node, read, raw_node.value, lenv) CallWriteNode.new(raw_node, rhs, lenv) when :call_and_write_node read = CallReadNode.new(raw_node, lenv) rhs = AndNode.new(raw_node, read, raw_node.value, lenv) CallWriteNode.new(raw_node, rhs, lenv) when :multi_write_node then MultiWriteNode.new(raw_node, lenv) when :match_write_node then MatchWriteNode.new(raw_node, lenv) # value when :self_node then SelfNode.new(raw_node, lenv) when :nil_node then NilNode.new(raw_node, lenv) when :true_node then TrueNode.new(raw_node, lenv) when :false_node then FalseNode.new(raw_node, lenv) when :integer_node then IntegerNode.new(raw_node, lenv) when :float_node then FloatNode.new(raw_node, lenv) when :rational_node then RationalNode.new(raw_node, lenv) when :imaginary_node then ComplexNode.new(raw_node, lenv) when :source_file_node then StringNode.new(raw_node, lenv, "") when :source_line_node then IntegerNode.new(raw_node, lenv, 0) when :source_encoding_node then SourceEncodingNode.new(raw_node, lenv) when :symbol_node then SymbolNode.new(raw_node, lenv) when :interpolated_symbol_node then InterpolatedSymbolNode.new(raw_node, lenv) when :string_node then StringNode.new(raw_node, lenv, raw_node.content) when :interpolated_string_node then InterpolatedStringNode.new(raw_node, lenv) when :x_string_node then StringNode.new(raw_node, lenv, "") when :interpolated_x_string_node then InterpolatedStringNode.new(raw_node, lenv) when :regular_expression_node then RegexpNode.new(raw_node, lenv) when :interpolated_regular_expression_node then InterpolatedRegexpNode.new(raw_node, lenv) when :match_last_line_node then MatchLastLineNode.new(raw_node, lenv) when :interpolated_match_last_line_node then InterpolatedMatchLastLineNode.new(raw_node, lenv) when :range_node then RangeNode.new(raw_node, lenv) when :array_node then ArrayNode.new(raw_node, lenv) when :hash_node then HashNode.new(raw_node, lenv, false) when :keyword_hash_node then HashNode.new(raw_node, lenv, true) when :lambda_node then LambdaNode.new(raw_node, lenv) # misc when :defined_node then DefinedNode.new(raw_node, lenv) when :splat_node then SplatNode.new(raw_node, lenv) when :for_node then ForNode.new(raw_node, lenv) when :alias_global_variable_node then AliasGlobalVariableNode.new(raw_node, lenv) when :post_execution_node then PostExecutionNode.new(raw_node, lenv) when :flip_flop_node then FlipFlopNode.new(raw_node, lenv) when :shareable_constant_node then create_node(raw_node.write, lenv) when :match_required_node then MatchRequiredNode.new(raw_node, lenv) when :match_predicate_node then MatchPreidcateNode.new(raw_node, lenv) # call when :super_node then SuperNode.new(raw_node, lenv) when :forwarding_super_node then ForwardingSuperNode.new(raw_node, lenv) when :yield_node then YieldNode.new(raw_node, lenv) when :call_node if !raw_node.receiver # TODO: handle them only when it is directly under class or module case raw_node.name when :include return IncludeMetaNode.new(raw_node, lenv) when :attr_reader return AttrReaderMetaNode.new(raw_node, lenv) when :attr_accessor return AttrAccessorMetaNode.new(raw_node, lenv) end end CallNode.new(raw_node, lenv) else pp raw_node raise "not supported yet: #{ raw_node.type }" end end
create_part_node(raw_part, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/value.rb, line 3 def self.create_part_node(raw_part, lenv) case raw_part.type when :string_node AST.create_node(raw_part, lenv) when :embedded_statements_node raw_part.statements ? AST.create_node(raw_part.statements, lenv) : DummyNilNode.new(TypeProf::CodeRange.from_node(raw_part), lenv) when :embedded_variable_node AST.create_node(raw_part.variable, lenv) else raise "unknown symbol part: #{ raw_part.type }" end end
create_pattern_node(raw_node, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 276 def self.create_pattern_node(raw_node, lenv) while true case raw_node.type when :parentheses_node raw_node = raw_node.body when :implicit_node raw_node = raw_node.value else break end end case raw_node.type when :array_pattern_node then ArrayPatternNode.new(raw_node, lenv) when :hash_pattern_node then HashPatternNode.new(raw_node, lenv) when :find_pattern_node then FindPatternNode.new(raw_node, lenv) when :alternation_pattern_node then AltPatternNode.new(raw_node, lenv) when :capture_pattern_node then CapturePatternNode.new(raw_node, lenv) when :if_node then IfPatternNode.new(raw_node, lenv) when :pinned_variable_node then PinnedPatternNode.new(raw_node, lenv) when :pinned_expression_node then PinnedPatternNode.new(raw_node, lenv) when :local_variable_target_node dummy_node = DummyRHSNode.new(TypeProf::CodeRange.from_node(raw_node.location), lenv) LocalVariableWriteNode.new(raw_node, dummy_node, lenv) when :constant_read_node, :constant_path_node ConstantReadNode.new(raw_node, lenv) when :self_node then SelfNode.new(raw_node, lenv) when :nil_node then NilNode.new(raw_node, lenv) when :true_node then TrueNode.new(raw_node, lenv) when :false_node then FalseNode.new(raw_node, lenv) when :integer_node then IntegerNode.new(raw_node, lenv) when :float_node then FloatNode.new(raw_node, lenv) when :rational_node then RationalNode.new(raw_node, lenv) when :imaginary_node then ComplexNode.new(raw_node, lenv) when :source_file_node then StringNode.new(raw_node, lenv, "") when :source_line_node then IntegerNode.new(raw_node, lenv, 0) when :source_encoding_node then SourceEncodingNode.new(raw_node, lenv) when :symbol_node then SymbolNode.new(raw_node, lenv) when :interpolated_symbol_node then InterpolatedSymbolNode.new(raw_node, lenv) when :string_node then StringNode.new(raw_node, lenv, raw_node.content) when :interpolated_string_node then InterpolatedStringNode.new(raw_node, lenv) when :x_string_node then StringNode.new(raw_node, lenv, "") when :interpolated_x_string_node then InterpolatedStringNode.new(raw_node, lenv) when :regular_expression_node then RegexpNode.new(raw_node, lenv) when :interpolated_regular_expression_node then InterpolatedRegexpNode.new(raw_node, lenv) when :array_node then ArrayNode.new(raw_node, lenv) # for %w[foo bar] when :range_node then RangeNode.new(raw_node, lenv) # TODO: support range pattern correctly else raise "unknown pattern node type: #{ raw_node.type }" end end
create_rbs_decl(raw_decl, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 373 def self.create_rbs_decl(raw_decl, lenv) case raw_decl when RBS::AST::Declarations::Class SigClassNode.new(raw_decl, lenv) when RBS::AST::Declarations::Module SigModuleNode.new(raw_decl, lenv) when RBS::AST::Declarations::Interface SigInterfaceNode.new(raw_decl, lenv) when RBS::AST::Declarations::Constant SigConstNode.new(raw_decl, lenv) when RBS::AST::Declarations::AliasDecl when RBS::AST::Declarations::TypeAlias SigTypeAliasNode.new(raw_decl, lenv) # TODO: check when RBS::AST::Declarations::Global SigGlobalVariableNode.new(raw_decl, lenv) else raise "unsupported: #{ raw_decl.class }" end end
create_rbs_func_type(raw_decl, raw_type_params, raw_block, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 418 def self.create_rbs_func_type(raw_decl, raw_type_params, raw_block, lenv) SigFuncType.new(raw_decl, raw_type_params, raw_block, lenv) end
create_rbs_member(raw_decl, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 394 def self.create_rbs_member(raw_decl, lenv) case raw_decl when RBS::AST::Members::MethodDefinition SigDefNode.new(raw_decl, lenv) when RBS::AST::Members::Include SigIncludeNode.new(raw_decl, lenv) when RBS::AST::Members::Extend when RBS::AST::Members::Public when RBS::AST::Members::Private when RBS::AST::Members::Alias SigAliasNode.new(raw_decl, lenv) when RBS::AST::Members::AttrReader SigAttrReaderNode.new(raw_decl, lenv) when RBS::AST::Members::AttrWriter SigAttrWriterNode.new(raw_decl, lenv) when RBS::AST::Members::AttrAccessor SigAttrAccessorNode.new(raw_decl, lenv) when RBS::AST::Declarations::Base self.create_rbs_decl(raw_decl, lenv) else raise "unsupported: #{ raw_decl.class }" end end
create_rbs_type(raw_decl, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 422 def self.create_rbs_type(raw_decl, lenv) case raw_decl when RBS::Types::Bases::Nil SigTyBaseNilNode.new(raw_decl, lenv) when RBS::Types::Bases::Bool SigTyBaseBoolNode.new(raw_decl, lenv) when RBS::Types::Bases::Self SigTyBaseSelfNode.new(raw_decl, lenv) when RBS::Types::Bases::Void SigTyBaseVoidNode.new(raw_decl, lenv) when RBS::Types::Bases::Any SigTyBaseAnyNode.new(raw_decl, lenv) when RBS::Types::Bases::Top SigTyBaseTopNode.new(raw_decl, lenv) when RBS::Types::Bases::Bottom SigTyBaseBottomNode.new(raw_decl, lenv) when RBS::Types::Bases::Instance SigTyBaseInstanceNode.new(raw_decl, lenv) when RBS::Types::Bases::Class SigTyBaseClassNode.new(raw_decl, lenv) when RBS::Types::Alias SigTyAliasNode.new(raw_decl, lenv) when RBS::Types::Union SigTyUnionNode.new(raw_decl, lenv) when RBS::Types::Intersection SigTyIntersectionNode.new(raw_decl, lenv) when RBS::Types::ClassSingleton SigTySingletonNode.new(raw_decl, lenv) when RBS::Types::ClassInstance SigTyInstanceNode.new(raw_decl, lenv) when RBS::Types::Tuple SigTyTupleNode.new(raw_decl, lenv) when RBS::Types::Record SigTyRecordNode.new(raw_decl, lenv) when RBS::Types::Interface SigTyInterfaceNode.new(raw_decl, lenv) when RBS::Types::Proc SigTyProcNode.new(raw_decl, lenv) when RBS::Types::Variable SigTyVarNode.new(raw_decl, lenv) when RBS::Types::Optional SigTyOptionalNode.new(raw_decl, lenv) when RBS::Types::Literal SigTyLiteralNode.new(raw_decl, lenv) else raise "unknown RBS type: #{ raw_decl.class }" end end
create_target_node(raw_node, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 251 def self.create_target_node(raw_node, lenv) dummy_node = DummyRHSNode.new(TypeProf::CodeRange.from_node(raw_node.location), lenv) case raw_node.type when :local_variable_target_node LocalVariableWriteNode.new(raw_node, dummy_node, lenv) when :instance_variable_target_node InstanceVariableWriteNode.new(raw_node, dummy_node, lenv) when :class_variable_target_node ClassVariableWriteNode.new(raw_node, dummy_node, lenv) when :global_variable_target_node GlobalVariableWriteNode.new(raw_node, dummy_node, lenv) when :constant_target_node ConstantWriteNode.new(raw_node, dummy_node, lenv) when :constant_path_target_node ConstantWriteNode.new(raw_node, dummy_node, lenv) when :index_target_node IndexWriteNode.new(raw_node, dummy_node, lenv) when :call_target_node CallWriteNode.new(raw_node, dummy_node, lenv) else pp raw_node raise "not supported yet: #{ raw_node.type }" end end
get_rbs_comment_before(raw_node, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/method.rb, line 3 def self.get_rbs_comment_before(raw_node, lenv) comments = Fiber[:comments] i = comments.bsearch_index {|comment| comment.location.start_line >= raw_node.location.start_line } || comments.size lineno = raw_node.location.start_line rbs_comments = [] while i > 0 i -= 1 lineno -= 1 comment = comments[i] comment_loc = comment.location comment_text = comment_loc.slice if comment_loc.start_line == lineno && comment_text.start_with?("#:") rbs_comments[comment_loc.start_line] = " " * (comment_loc.start_column + 2) + comment_text[2..] else break end end return nil if rbs_comments.empty? rbs_comments = rbs_comments.map {|line| line || "" }.join("\n") method_type = RBS::Parser.parse_method_type(rbs_comments) if method_type AST.create_rbs_func_type(method_type, method_type.type_params, method_type.block, lenv) else nil end rescue RBS::ParsingError # TODO: report the error nil end
is_a_class(node)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/control.rb, line 3 def self.is_a_class(node) if node.is_a?(CallNode) recv = node.recv if recv.is_a?(LocalVariableReadNode) if node.positional_args && node.positional_args.size == 1 && node.positional_args[0].static_ret # TODO: need static resolusion of a constant return [recv.var, node.positional_args[0].static_ret] end end end return nil end
parse_cpath(raw_node, cref)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 337 def self.parse_cpath(raw_node, cref) names = [] while raw_node case raw_node.type when :constant_read_node names << raw_node.name break when :constant_path_node, :constant_path_target_node if raw_node.parent # temporarily support old Prism https://bugs.ruby-lang.org/issues/20467 names << (raw_node.respond_to?(:name) ? raw_node.name : raw_node.child.name) raw_node = raw_node.parent else return names.reverse end when :self_node break if cref.scope_level == :class return nil else return nil end end return cref.cpath + names.reverse end
parse_params(tbl, raw_args, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/method.rb, line 33 def self.parse_params(tbl, raw_args, lenv) unless raw_args return { req_positionals: [], opt_positionals: [], opt_positional_defaults: [], rest_positionals: nil, post_positionals: [], req_keywords: [], opt_keywords: [], opt_keyword_defaults: [], rest_keywords: nil, block: nil, } end args_code_ranges = [] req_positionals = [] raw_args.requireds.each do |n| args_code_ranges << TypeProf::CodeRange.from_node(n.location) req_positionals << (n.is_a?(Prism::MultiTargetNode) ? nil : n.name) end # pre_init = args[1] opt_positionals = [] opt_positional_defaults = [] raw_args.optionals.each do |n| opt_positionals << n.name opt_positional_defaults << AST.create_node(n.value, lenv) end post_positionals = raw_args.posts.map {|n| (n.is_a?(Prism::MultiTargetNode) ? nil : n.name) } rest_positionals = raw_args.rest&.name req_keywords = [] opt_keywords = [] opt_keyword_defaults = [] raw_args.keywords.each do |kw| case kw.type when :required_keyword_parameter_node req_keywords << kw.name when :optional_keyword_parameter_node opt_keywords << kw.name opt_keyword_defaults << AST.create_node(kw.value, lenv) end end case raw_args.keyword_rest when Prism::KeywordRestParameterNode rest_keywords = raw_args.keyword_rest.name if raw_args.keyword_rest when Prism::NoKeywordsParameterNode # what to do? when nil # nothing to do else raise "unexpected keyword rest: #{ raw_args.keyword_rest.class }" end block = raw_args.block.name if raw_args.block { req_positionals:, opt_positionals:, opt_positional_defaults:, rest_positionals:, post_positionals:, req_keywords:, opt_keywords:, opt_keyword_defaults:, rest_keywords:, block:, args_code_ranges: } end
parse_rb(path, src)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 3 def self.parse_rb(path, src) result = Prism.parse(src) return nil unless result.errors.empty? # comments, errors, magic_comments raw_scope = result.value raise unless raw_scope.type == :program_node Fiber[:comments] = result.comments cref = CRef::Toplevel lenv = LocalEnv.new(path, cref, {}, []) ProgramNode.new(raw_scope, lenv) end
parse_rbs(path, src)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast.rb, line 362 def self.parse_rbs(path, src) _buffer, _directives, raw_decls = RBS::Parser.parse_signature(src) cref = CRef::Toplevel lenv = LocalEnv.new(path, cref, {}, []) raw_decls.map do |raw_decl| AST.create_rbs_decl(raw_decl, lenv) end end
resolve_rbs_name(name, lenv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 3 def self.resolve_rbs_name(name, lenv) if name.namespace.absolute? name.namespace.path + [name.name] else lenv.cref.cpath + name.namespace.path + [name.name] end end