class TypeProf::Core::AST::SigModuleBaseNode::SigDefNode::SigIncludeNode::SigAliasNode::SigAttrReaderNode
Attributes
method_type[R]
mid[R]
Public Class Methods
new(raw_decl, lenv)
click to toggle source
Calls superclass method
TypeProf::Core::AST::Node::new
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 277 def initialize(raw_decl, lenv) super(raw_decl, lenv) @mid = raw_decl.name # `eval` is used to prevent TypeProf from failing to parse keyword arguments during dogfooding. # TODO: Remove `eval` once TypeProf supports keyword arguments. eval <<~RUBY rbs_method_type = RBS::MethodType.new( type: RBS::Types::Function.empty(raw_decl.type), type_params: [], block: nil, location: raw_decl.type.location, ) @method_type = AST.create_rbs_func_type(rbs_method_type, [], nil, lenv) RUBY end
Public Instance Methods
attrs(= { mid: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 296 def attrs = { mid: } def install0(genv) @changes.add_method_decl_box(genv, @lenv.cref.cpath, false, @mid, [@method_type], false) Source.new end end
install0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 298 def install0(genv) @changes.add_method_decl_box(genv, @lenv.cref.cpath, false, @mid, [@method_type], false) Source.new end
subnodes(= { method_type: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 295 def subnodes = { method_type: } def attrs = { mid: } def install0(genv) @changes.add_method_decl_box(genv, @lenv.cref.cpath, false, @mid, [@method_type], false) Source.new end end class SigAttrWriterNode < Node def initialize(raw_decl, lenv) super(raw_decl, lenv) @mid = :"#{raw_decl.name}=" # `eval` is used to prevent TypeProf from failing to parse keyword arguments during dogfooding. # TODO: Remove `eval` once TypeProf supports keyword arguments. eval <<~RUBY # (raw_decl.type) -> raw_decl.type rbs_method_type = RBS::MethodType.new( type: RBS::Types::Function.new( required_positionals: [RBS::Types::Function::Param.new(name: nil, type: raw_decl.type, location: raw_decl.type.location)], optional_positionals: [], rest_positionals: nil, trailing_positionals: [], required_keywords: {}, optional_keywords: {}, rest_keywords: nil, return_type: raw_decl.type, ), type_params: [], block: nil, location: raw_decl.type.location, ) @method_type = AST.create_rbs_func_type(rbs_method_type, [], nil, lenv) RUBY end attr_reader :mid, :method_type def subnodes = { method_type: } def attrs = { mid: } def install0(genv) @changes.add_method_decl_box(genv, @lenv.cref.cpath, false, @mid, [@method_type], false) Source.new end end class SigAttrAccessorNode < Node def initialize(raw_decl, lenv) super(raw_decl, lenv) @reader = SigAttrReaderNode.new(raw_decl, lenv) @writer = SigAttrWriterNode.new(raw_decl, lenv) end attr_reader :reader, :writer def subnodes = { reader:, writer: } def install0(genv) @reader.install0(genv) @writer.install0(genv) Source.new end end class SigConstNode < Node def initialize(raw_decl, lenv) super(raw_decl, lenv) @cpath = AST.resolve_rbs_name(raw_decl.name, lenv) @type = AST.create_rbs_type(raw_decl.type, lenv) end attr_reader :cpath, :type def subnodes = { type: } def attrs = { cpath: } def define0(genv) @type.define(genv) mod = genv.resolve_const(@cpath) mod.add_decl(self) mod end def define_copy(genv) mod = genv.resolve_const(@cpath) mod.add_decl(self) mod.remove_decl(@prev_node) super(genv) end def undefine0(genv) genv.resolve_const(@cpath).remove_decl(self) @type.undefine(genv) end def install0(genv) box = @changes.add_type_read_box(genv, @type) @changes.add_edge(genv, box.ret, @static_ret.vtx) box.ret end end class SigTypeAliasNode < Node def initialize(raw_decl, lenv) super(raw_decl, lenv) @cpath = AST.resolve_rbs_name(raw_decl.name, lenv) @name = @cpath.pop @type = AST.create_rbs_type(raw_decl.type, lenv) @params = raw_decl.type_params.map {|param| param.name } end attr_reader :cpath, :name, :type, :params def define0(genv) @type.define(genv) tae = genv.resolve_type_alias(@cpath, @name) tae.add_decl(self) tae end def define_copy(genv) tae = genv.resolve_type_alias(@cpath, @name) tae.add_decl(self) tae.remove_decl(@prev_node) super(genv) end def undefine0(genv) tae = genv.resolve_type_alias(@cpath, @name) tae.remove_decl(self) @type.undefine(genv) end def install0(genv) Source.new end end class SigGlobalVariableNode < Node def initialize(raw_decl, lenv) super(raw_decl, lenv) @var = raw_decl.name @type = AST.create_rbs_type(raw_decl.type, lenv) end attr_reader :cpath, :type def subnodes = { type: } def attrs = { cpath: } def define0(genv) @type.define(genv) mod = genv.resolve_gvar(@var) mod.add_decl(self) mod end def define_copy(genv) mod = genv.resolve_gvar(@var) mod.add_decl(self) mod.remove_decl(@prev_node) super(genv) end def undefine0(genv) genv.resolve_gvar(@var).remove_decl(self) @type.undefine(genv) end def install0(genv) box = @changes.add_type_read_box(genv, @type) @changes.add_edge(genv, box.ret, @static_ret.vtx) box.