class TypedRb::Model::TmConst

A constant expression

Attributes

val[R]

Public Class Methods

new(val, node) click to toggle source
Calls superclass method TypedRb::Model::Expr::new
# File lib/typed/model/tm_const.rb, line 9
def initialize(val, node)
  super(node)
  @val = val
end

Public Instance Methods

check_type(_context) click to toggle source
# File lib/typed/model/tm_const.rb, line 14
def check_type(_context)
  value_ruby_type = Types::TypingContext.find_namespace(@val)
  type = if value_ruby_type.instance_of?(Class)
           Runtime::TypeParser.parse_singleton_object_type(value_ruby_type.name)
         elsif value_ruby_type.instance_of?(Module)
           Runtime::TypeParser.parse_existential_object_type(value_ruby_type.name)
         else
           # Must be a user defined constant
           Types::TyObject.new(value_ruby_type.class)
         end
  type.node = node
  type
end