Class: TypeProf::Type::Class
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::TypeProf::Type
|
|
Instance Chain:
|
|
Inherits: |
TypeProf::Type
|
Defined in: | lib/typeprof/type.rb |
Overview
or Module
Constant Summary
::TypeProf::Type
- Inherited
Class Method Summary
::TypeProf::Type
- Inherited
Instance Attribute Summary
- #idx readonly
- #kind readonly
- #superclass readonly
- #superclass_type_args rw
- #type_params readonly
Instance Method Summary
- #consistent?(other) ⇒ Boolean
- #inspect
- #method_dispatch_info
- #screen_name(scratch)
- #substitute(_subst, _depth)
::TypeProf::Type
- Inherited
Constructor Details
.new(kind, idx, type_params, superclass, name) ⇒ Class
# File 'lib/typeprof/type.rb', line 483
def initialize(kind, idx, type_params, superclass, name) @kind = kind # :class | :module @idx = idx @type_params = type_params @superclass = superclass raise if @kind == :class && !@superclass @_name = name end
Instance Attribute Details
#idx (readonly)
[ GitHub ]# File 'lib/typeprof/type.rb', line 492
attr_reader :kind, :idx, :type_params, :superclass
#kind (readonly)
[ GitHub ]# File 'lib/typeprof/type.rb', line 492
attr_reader :kind, :idx, :type_params, :superclass
#superclass (readonly)
[ GitHub ]# File 'lib/typeprof/type.rb', line 492
attr_reader :kind, :idx, :type_params, :superclass
#superclass_type_args (rw)
[ GitHub ]# File 'lib/typeprof/type.rb', line 493
attr_accessor :superclass_type_args
#type_params (readonly)
[ GitHub ]# File 'lib/typeprof/type.rb', line 492
attr_reader :kind, :idx, :type_params, :superclass
Instance Method Details
#consistent?(other) ⇒ Boolean
# File 'lib/typeprof/type.rb', line 511
def consistent?(other) case other when Type::Class ty = self loop do # ad-hoc return false if !ty || !other # module return true if ty.idx == other.idx return false if ty.idx == 0 # Object ty = ty.superclass end when Type::Instance return true if other.klass == Type::Builtin[:obj] || other.klass == Type::Builtin[:class] || other.klass == Type::Builtin[:module] return false else false end end
#inspect
[ GitHub ]# File 'lib/typeprof/type.rb', line 495
def inspect if @_name "#{ @_name }@#{ @idx }" else "Class[#{ @idx }]" end end
#method_dispatch_info
[ GitHub ]# File 'lib/typeprof/type.rb', line 507
def method_dispatch_info [self, true, false] end
#screen_name(scratch)
[ GitHub ]# File 'lib/typeprof/type.rb', line 503
def screen_name(scratch) "singleton(#{ scratch.get_class_name(self) })" end
#substitute(_subst, _depth)
[ GitHub ]# File 'lib/typeprof/type.rb', line 531
def substitute(_subst, _depth) self end