2015-10-23 14:22:55 +03:00
|
|
|
module Soml
|
2015-09-27 12:58:54 +03:00
|
|
|
Compiler.class_eval do
|
|
|
|
|
2016-03-07 11:55:28 +02:00
|
|
|
def on_ClassField statement
|
2015-10-09 17:51:14 +03:00
|
|
|
#puts statement.inspect
|
2016-03-07 11:55:28 +02:00
|
|
|
#type , name , value = *statement
|
2015-09-27 12:58:54 +03:00
|
|
|
|
2015-10-06 00:27:13 +03:00
|
|
|
for_class = @clazz
|
|
|
|
raise "no class" unless for_class
|
2016-03-07 11:55:28 +02:00
|
|
|
index = for_class.instance_type.variable_index(statement.name)
|
2015-09-27 16:06:48 +03:00
|
|
|
#raise "class field already defined:#{name} for class #{for_class.name}" if index
|
2015-10-15 10:27:06 +03:00
|
|
|
#puts "Define field #{name} on class #{for_class.name}"
|
2016-03-07 11:55:28 +02:00
|
|
|
index = for_class.instance_type.add_instance_variable( statement.name , statement.type )
|
2015-09-27 12:58:54 +03:00
|
|
|
|
2015-10-16 18:16:39 +03:00
|
|
|
return nil # statements don't reurn values, only expressions
|
2015-09-27 12:58:54 +03:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|