class Ikra::AST::ClassDefNode
Attributes
instance_methods[R]
instance_variables[R]
name[R]
ruby_class[R]
Public Class Methods
new( name:, ruby_class:, instance_variables: [], instance_methods: [], class_variables: [], class_methods: [])
click to toggle source
Class variables/methods are defined as instance variables/methods on the singleton class ClassDefNode
# File lib/ast/nodes.rb, line 53 def initialize( name:, ruby_class:, instance_variables: [], instance_methods: [], class_variables: [], class_methods: []) @name = name @ruby_class = ruby_class @instance_variables = instance_variables @instance_methods = instance_methods end
Public Instance Methods
==(other)
click to toggle source
Calls superclass method
Ikra::AST::Node#==
# File lib/ast/nodes.rb, line 100 def ==(other) return super(other) && name == other.name && ruby_class == other.ruby_class && instance_variables == other.instance_variables && instance_methods == other.instance_methods && class_variables == other.class_variables && class_methods == other.class_methods end
accept(visitor)
click to toggle source
# File lib/ast/visitor.rb, line 20 def accept(visitor) return visitor.visit_class_def_node(self) end
add_instance_method(inst_meth)
click to toggle source
# File lib/ast/nodes.rb, line 81 def add_instance_method(inst_meth) instance_methods.push(inst_meth) inst_meth.parent = self end
add_instance_variable(inst_var)
click to toggle source
# File lib/ast/nodes.rb, line 76 def add_instance_variable(inst_var) instance_variables.push(inst_var) inst_meth.parent = self end
clone()
click to toggle source
# File lib/ast/nodes.rb, line 66 def clone return ClassDefNode.new( name: @name, ruby_class: @ruby_class, instance_variables: @instance_variables.map do |i| i.clone end, instance_methods: @instance_methods.map do |i| i.clone end, class_variables: @class_variables.map do |c| c.clone end, class_methods: @class_methods.map do |c| c.clone end) end
enclosing_class()
click to toggle source
# File lib/ast/nodes.rb, line 96 def enclosing_class return self end
get_type()
click to toggle source
# File lib/types/inference/ast_inference.rb, line 42 def get_type return ruby_class.to_ikra_type end
has_instance_method?(selector)
click to toggle source
# File lib/ast/nodes.rb, line 86 def has_instance_method?(selector) return instance_method(selector) != nil end
instance_method(selector)
click to toggle source
# File lib/ast/nodes.rb, line 90 def instance_method(selector) return instance_methods.find do |meth| meth.name == selector end end
to_s()
click to toggle source
# File lib/ast/printer.rb, line 16 def to_s return "[ClassDefNode: #{name}; #{instance_variables.to_s}; #{instance_methods.to_s}]" end