class TypeProf::Core::AST::SigModuleBaseNode::SigDefNode::SigIncludeNode::SigAliasNode::SigAttrReaderNode::SigAttrWriterNode::SigAttrAccessorNode::SigConstNode

Attributes

cpath[R]
type[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 362
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

Public Instance Methods

attrs(= { cpath: }) click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 370
  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
define0(genv) click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 372
def define0(genv)
  @type.define(genv)
  mod = genv.resolve_const(@cpath)
  mod.add_decl(self)
  mod
end
define_copy(genv) click to toggle source
Calls superclass method TypeProf::Core::AST::Node#define_copy
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 379
def define_copy(genv)
  mod = genv.resolve_const(@cpath)
  mod.add_decl(self)
  mod.remove_decl(@prev_node)
  super(genv)
end
install0(genv) click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 391
def install0(genv)
  box = @changes.add_type_read_box(genv, @type)
  @changes.add_edge(genv, box.ret, @static_ret.vtx)
  box.ret
end
subnodes(= { type: }) click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 369
    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.ret
    end
  end
end
undefine0(genv) click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb, line 386
def undefine0(genv)
  genv.resolve_const(@cpath).remove_decl(self)
  @type.undefine(genv)
end