class TypeProf::Core::AST::SigFuncType::SigTyAliasNode::SigTyUnionNode::SigTySingletonNode
Attributes
cpath[R]
toplevel[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_type.rb, line 334 def initialize(raw_decl, lenv) super(raw_decl, lenv) name = raw_decl.name @cpath = name.namespace.path + [name.name] @toplevel = name.namespace.absolute? end
Public Instance Methods
attrs(= { cpath:, toplevel: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 342 def attrs = { cpath:, toplevel: } def define0(genv) const_reads = [] const_read = BaseConstRead.new(genv, @cpath.first, @toplevel ? CRef::Toplevel : @lenv.cref) const_reads << const_read unless @cpath.empty? @cpath[1..].each do |cname| const_read = ScopedConstRead.new(cname, const_read) const_reads << const_read end end const_reads end def undefine0(genv) @static_ret.each do |const_read| const_read.destroy(genv) end end def covariant_vertex0(genv, changes, vtx, subst) # TODO: type.args changes.add_depended_static_read(@static_ret.last) cpath = @static_ret.last.cpath return unless cpath mod = genv.resolve_cpath(cpath) changes.add_edge(genv, Source.new(Type::Singleton.new(genv, mod)), vtx) end def contravariant_vertex0(genv, changes, vtx, subst) # TODO: type.args changes.add_depended_static_read(@static_ret.last) cpath = @static_ret.last.cpath return unless cpath mod = genv.resolve_cpath(cpath) changes.add_edge(genv, Source.new(Type::Singleton.new(genv, mod)), vtx) end def show s = "::#{ @cpath.join("::") }" if !@args.empty? s << "[...]" end "singleton(#{ s })" end end
contravariant_vertex0(genv, changes, vtx, subst)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 372 def contravariant_vertex0(genv, changes, vtx, subst) # TODO: type.args changes.add_depended_static_read(@static_ret.last) cpath = @static_ret.last.cpath return unless cpath mod = genv.resolve_cpath(cpath) changes.add_edge(genv, Source.new(Type::Singleton.new(genv, mod)), vtx) end
covariant_vertex0(genv, changes, vtx, subst)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 363 def covariant_vertex0(genv, changes, vtx, subst) # TODO: type.args changes.add_depended_static_read(@static_ret.last) cpath = @static_ret.last.cpath return unless cpath mod = genv.resolve_cpath(cpath) changes.add_edge(genv, Source.new(Type::Singleton.new(genv, mod)), vtx) end
define0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 344 def define0(genv) const_reads = [] const_read = BaseConstRead.new(genv, @cpath.first, @toplevel ? CRef::Toplevel : @lenv.cref) const_reads << const_read unless @cpath.empty? @cpath[1..].each do |cname| const_read = ScopedConstRead.new(cname, const_read) const_reads << const_read end end const_reads end
show()
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 381 def show s = "::#{ @cpath.join("::") }" if !@args.empty? s << "[...]" end "singleton(#{ s })" end
undefine0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb, line 357 def undefine0(genv) @static_ret.each do |const_read| const_read.destroy(genv) end end