class TypedRb::Model::TmSClass

Class expression

Attributes

body[R]
class_name[R]
super_class_name[R]

Public Class Methods

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

Public Instance Methods

check_type(context) click to toggle source
# File lib/typed/model/tm_s_class.rb, line 15
def check_type(context)
  if class_name != :self
    class_ruby_type = Types::TypingContext.find_namespace(class_name)
    class_type = Runtime::TypeParser.parse_singleton_object_type(class_ruby_type.name)
    class_type.node = node
    context = context.add_binding(:self, class_type)
  end
  Types::TypingContext.push_context(:sclass)
  res = body.check_type(context)
  Types::TypingContext.pop_context
  res
end