1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
|
# File 'lib/adsl/parser/ast_nodes.rb', line 1143
def typecheck_and_resolve(context)
objset = @objset.typecheck_and_resolve context
klass = objset.type
raise ADSLError, 'Cannot create an object on an empty objset' if klass.nil?
relation = context.find_relation klass, @rel_name.text, @rel_name.lineno
create_objset = ASTCreateObjset.new(
:class_name => ASTIdent.new(:text => relation.to_class.name)
)
assoc_builder = (@empty_first ? ASTSetTup : ASTCreateTup).new(
:objset1 => @objset,
:rel_name => @rel_name,
:objset2 => create_objset
)
context.pre_stmts << assoc_builder.typecheck_and_resolve(context)
create_objset.typecheck_and_resolve(context)
end
|