class ADSL::Parser::ASTDereferenceCreate
Public Instance Methods
objset_has_side_effects?()
click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 1141 def objset_has_side_effects?; true; end
to_adsl()
click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 1163 def to_adsl "derefcreate(#{@objset.to_adsl}.#{@rel_name.text})" end
typecheck_and_resolve(context)
click to toggle source
# 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