class ADSL::Parser::ASTOneOfObjset
Public Instance Methods
objset_has_side_effects?()
click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 1069 def objset_has_side_effects? @objsets.nil? ? false : @objsets.map{ |o| o.objset_has_side_effects? }.include?(true) end
optimize()
click to toggle source
Calls superclass method
ADSL::Parser::ASTNode#optimize
# File lib/adsl/parser/ast_nodes.rb, line 1085 def optimize until_no_change super do |o| if !o.is_a?(ASTOneOfObjset) o elsif o.objsets.empty? ASTEmptyObjset.new elsif o.objsets.length == 1 o.objsets.first else ASTOneOfObjset.new(:objsets => o.objsets.uniq) end end end
to_adsl()
click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 1099 def to_adsl "any_of(#{ @objsets.map(&:to_adsl).join ', ' })" end
typecheck_and_resolve(context)
click to toggle source
# File lib/adsl/parser/ast_nodes.rb, line 1073 def typecheck_and_resolve(context) objsets = @objsets.map{ |o| o.typecheck_and_resolve context } common_type = ADSL::DS::DSClass.common_supertype objsets.reject{ |o| o.type.nil? } if objsets.length == 0 ADSL::DS::DSEmptyObjset.new elsif objsets.length == 1 objsets.first else ADSL::DS::DSOneOfObjset.new :objsets => objsets end end