Class: ADSL::Parser::ASTOneOf

Inherits:
ASTNode show all
Defined in:
lib/adsl/parser/ast_nodes.rb

Instance Method Summary collapse

Methods inherited from ASTNode

#==, #adsl_ast, #adsl_ast_size, #block_replace, #dup, #hash, is_formula?, is_objset?, is_statement?, node_type, #preorder_traverse

Methods included from Verification::FormulaGenerators

#[], #and, #binary_op, #binary_op_with_any_number_of_params, #equiv, #exists, #false, #forall, #handle_quantifier, #implies, #in_formula_builder, #not, #or, #true

Methods included from Verification::Utils

#classname_for_classname, #infer_classname_from_varname, #t

Instance Method Details

#objset_has_side_effects?Boolean

Returns:

  • (Boolean)


1009
1010
1011
# File 'lib/adsl/parser/ast_nodes.rb', line 1009

def objset_has_side_effects?
  @objset.nil? ? false : @objset.objset_has_side_effects?
end

#optimizeObject



1019
1020
1021
1022
1023
# File 'lib/adsl/parser/ast_nodes.rb', line 1019

def optimize
  until_no_change super do |oneof|
    oneof.objset.is_a?(ASTOneOf) ? oneof.objset : oneof
  end
end

#to_adslObject



1025
1026
1027
# File 'lib/adsl/parser/ast_nodes.rb', line 1025

def to_adsl
  "oneof(#{ @objset.to_adsl })"
end

#typecheck_and_resolve(context) ⇒ Object



1013
1014
1015
1016
1017
# File 'lib/adsl/parser/ast_nodes.rb', line 1013

def typecheck_and_resolve(context)
  objset = @objset.typecheck_and_resolve context
  return ADSL::DS::DSEmptyObjset.new if objset.type.nil?
  return ADSL::DS::DSOneOf.new :objset => objset
end