947
948
949
950
951
952
953
954
955
956
957
|
# File 'lib/adsl/parser/ast_nodes.rb', line 947
def typecheck_and_resolve(context)
objset1 = @objset1.typecheck_and_resolve context
objset2 = @objset2.typecheck_and_resolve context
raise ADSLError, "Ambiguous type on the left hand side on line #{@objset1.lineno}" if objset1.type.nil?
return [] if objset2.type.nil?
relation = context.find_relation objset1.type, @rel_name.text, @rel_name.lineno, objset2.type
return [
ADSL::DS::DSDeleteTup.new(:objset1 => objset1, :relation => relation, :objset2 => ADSL::DS::DSAllOf.new(:klass => relation.to_class)),
ADSL::DS::DSCreateTup.new(:objset1 => objset1, :relation => relation, :objset2 => objset2)
]
end
|