class TypeProf::Core::AST::IncludeMetaNode::AttrReaderMetaNode
Attributes
args[R]
Public Class Methods
new(raw_node, lenv)
click to toggle source
Calls superclass method
TypeProf::Core::AST::Node::new
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 48 def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end
Public Instance Methods
attrs(= { args: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 60 def attrs = { args: } def req_positionals = [] def opt_positionals = [] def post_positionals = [] def rest_positionals = nil def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.
install0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 76 def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end
mname_code_range(name)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 70 def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end
opt_keywords(= [])
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 67 def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new end end end end
opt_positionals(= [])
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 63 def opt_positionals = [] def post_positionals = [] def rest_positionals = nil def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new end
post_positionals(= [])
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 64 def post_positionals = [] def rest_positionals = nil def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new end
req_keywords(= [])
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 66 def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new end end end
req_positionals(= [])
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 62 def req_positionals = [] def opt_positionals = [] def post_positionals = [] def rest_positionals = nil def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new
rest_keywords(= nil)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 68 def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end
rest_positionals(= nil)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/meta.rb, line 65 def rest_positionals = nil def req_keywords = [] def opt_keywords = [] def rest_keywords = nil def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def install0(genv) @args.each do |arg| ivar_name = :"@#{ arg }" ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, ivar_name) e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) end Source.new end end class AttrAccessorMetaNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @args = [] raw_node.arguments.arguments.each do |raw_arg| @args << raw_arg.value.to_sym if raw_arg.type == :symbol_node end # TODO: error for non-LIT # TODO: fine-grained hover end attr_reader :args def attrs = { args: } def mname_code_range(name) idx = @args.index(name.to_sym) # TODO: support string args node = @raw_node.arguments.arguments[idx].location TypeProf::CodeRange.from_node(node) end def define0(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod end end def define_copy(genv) @args.map do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.add_def(self) mod.remove_def(@prev_node) mod end super(genv) end def undefine0(genv) @args.each do |arg| mod = genv.resolve_ivar(lenv.cref.cpath, false, :"@#{ arg }") mod.remove_def(self) end end def install0(genv) @args.zip(@static_ret) do |arg, ive| ivar_box = @changes.add_ivar_read_box(genv, @lenv.cref.cpath, false, :"@#{ arg }") e_ret = Vertex.new(self) ret_box = @changes.add_escape_box(genv, ivar_box.ret, e_ret) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, arg, FormalArguments::Empty, [ret_box]) vtx = Vertex.new(self) @changes.add_edge(genv, vtx, ive.vtx) f_args = FormalArguments.new([vtx], [], nil, [], [], [], nil, nil) @changes.add_method_def_box(genv, @lenv.cref.cpath, false, :"#{ arg }=", f_args, [ret_box]) end Source.new end end