class TypeProf::Core::AST::SigModuleBaseNode::SigDefNode::SigIncludeNode::SigAliasNode::SigAttrReaderNode::SigAttrWriterNode::SigAttrAccessorNode::SigConstNode - typeprof: Ruby Standard Library Documentation

# 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