Method: ADSL::Parser::ASTOneOfObjset#optimize

Defined in:
lib/adsl/parser/ast_nodes.rb

#optimizeObject



1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
# 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