org.eclipse.ocl.examples.impactanalyzer.instanceScope.unusedEvaluation
Class FindAlwaysUsedVariablesVisitor

java.lang.Object
  extended by org.eclipse.ocl.utilities.AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
      extended by org.eclipse.ocl.examples.impactanalyzer.instanceScope.unusedEvaluation.FindAlwaysUsedVariablesVisitor
All Implemented Interfaces:
Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

public class FindAlwaysUsedVariablesVisitor
extends AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

For an OCL expression finds out which of the Variables referred by any VariableExp within the expression will inevitably be used, regardless the values of any variables, deciding which branches may be taken. This can be useful to avoid expression evaluations when such variables are not yet defined.

Author:
Axel Uhl (D043530)

Field Summary
 
Fields inherited from class org.eclipse.ocl.utilities.AbstractVisitor
result
 
Constructor Summary
FindAlwaysUsedVariablesVisitor()
           
 
Method Summary
protected  java.util.Set<VariableExp> handleCollectionItem(CollectionItem<org.eclipse.emf.ecore.EClassifier> item, java.util.Set<VariableExp> itemResult)
          Visits the specified collection item with the result of visiting its item expression.
protected  java.util.Set<VariableExp> handleCollectionLiteralExp(CollectionLiteralExp<org.eclipse.emf.ecore.EClassifier> literalExp, java.util.List<java.util.Set<VariableExp>> partResults)
          Visits the specified collection literal expression with the results of visiting its parts (if any).
protected  java.util.Set<VariableExp> handleCollectionRange(CollectionRange<org.eclipse.emf.ecore.EClassifier> range, java.util.Set<VariableExp> firstResult, java.util.Set<VariableExp> lastResult)
          Visits the specified collection range with the results of visiting its first and last expressions.
protected  java.util.Set<VariableExp> handleConstraint(Constraint constraint, java.util.Set<VariableExp> specificationResult)
          Visits the specified constraint with the results of visiting its specification.
protected  java.util.Set<VariableExp> handleExpressionInOCL(ExpressionInOCL<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> expression, java.util.Set<VariableExp> contextResult, java.util.Set<VariableExp> resultResult, java.util.List<java.util.Set<VariableExp>> parameterResults, java.util.Set<VariableExp> bodyResult)
          Visits the specified expression-in-OCL with the results of visiting its context variable, its result variable (if any), its parameter variables (if any), and its body expression.
protected  java.util.Set<VariableExp> handleIfExp(IfExp<org.eclipse.emf.ecore.EClassifier> ifExp, java.util.Set<VariableExp> conditionResult, java.util.Set<VariableExp> thenResult, java.util.Set<VariableExp> elseResult)
          An if-expression inevitably uses all variables that are inevitably used in the condition plus those inevitably used in both, the then and the else branch.
protected  java.util.Set<VariableExp> handleIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp, java.util.Set<VariableExp> sourceResult, java.util.List<java.util.Set<VariableExp>> variableResults, java.util.Set<VariableExp> resultResult, java.util.Set<VariableExp> bodyResult)
          Visits the specified iterate expression with the results of visiting its source, its iterator variables, its result variable, and its body expression.
protected  java.util.Set<VariableExp> handleIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp, java.util.Set<VariableExp> sourceResult, java.util.List<java.util.Set<VariableExp>> variableResults, java.util.Set<VariableExp> bodyResult)
          Visits the specified iterator expression with the results of visiting its source, its iterator variables, and its body expression.
protected  java.util.Set<VariableExp> handleLetExp(LetExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> letExp, java.util.Set<VariableExp> variableResult, java.util.Set<VariableExp> inResult)
          For a let expression, all variables inevitably used in the variable's initialization expression as well as all variables inevitably used in the in expression are used inevitably by the let expression.
protected  java.util.Set<VariableExp> handleOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> callExp, java.util.Set<VariableExp> sourceResult, java.util.List<java.util.Set<VariableExp>> argumentResults)
          For an operation call it's not sure that the argument expression(s) will actually be evaluated.
protected  java.util.Set<VariableExp> handleOppositePropertyCallExp(OppositePropertyCallExp callExp, java.util.Set<VariableExp> sourceResult)
           
protected  java.util.Set<VariableExp> handlePropertyCallExp(PropertyCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> callExp, java.util.Set<VariableExp> sourceResult, java.util.List<java.util.Set<VariableExp>> qualifierResults)
          Visits the specified property call with the results of visiting its source and qualifiers (if any).
protected  java.util.Set<VariableExp> handleTupleLiteralExp(TupleLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> literalExp, java.util.List<java.util.Set<VariableExp>> partResults)
          Visits the specified tuple literal expression with the results of visiting its parts (if any).
protected  java.util.Set<VariableExp> handleTupleLiteralPart(TupleLiteralPart<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> part, java.util.Set<VariableExp> valueResult)
          Visits the specified tuple literal part with the results of visiting its value (if any).
protected  java.util.Set<VariableExp> handleVariable(Variable<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> variable, java.util.Set<VariableExp> initResult)
          Visits the specified variable with the results of visiting its initializer (if any).
 java.util.Set<VariableExp> visitExpressionInOCL(ExpressionInOCL<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> expression)
          Visits the expressions context variable, its parameter variables (if any), its result variable (if any), and finally its body expression.
 java.util.Set<VariableExp> visitIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp)
          Visits the iterate's source, then its iterator variables, result variable, and body expression.
 java.util.Set<VariableExp> visitIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp)
          Visits the iterator's source, then its variables, followed by its body expression.
 java.util.Set<VariableExp> visitOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> callExp)
          Visits the operation-call source and then its arguments.
 java.util.Set<VariableExp> visitOppositePropertyCallExp(OppositePropertyCallExp callExp)
          Visits the property-call source and then its qualifiers (if any).
 java.util.Set<VariableExp> visitVariableExp(VariableExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> v)
          Simply returns AbstractVisitor.result.
 
Methods inherited from class org.eclipse.ocl.utilities.AbstractVisitor
getSpecification, handleAssociationClassCallExp, handleMessageExp, safeVisit, visitAssociationClassCallExp, visitBooleanLiteralExp, visitCollectionItem, visitCollectionLiteralExp, visitCollectionRange, visitConstraint, visitEnumLiteralExp, visitIfExp, visitIntegerLiteralExp, visitInvalidLiteralExp, visitLetExp, visitMessageExp, visitNullLiteralExp, visitPropertyCallExp, visitRealLiteralExp, visitStateExp, visitStringLiteralExp, visitTupleLiteralExp, visitTupleLiteralPart, visitTypeExp, visitUnlimitedNaturalLiteralExp, visitUnspecifiedValueExp, visitVariable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FindAlwaysUsedVariablesVisitor

public FindAlwaysUsedVariablesVisitor()
Method Detail

visitVariableExp

public java.util.Set<VariableExp> visitVariableExp(VariableExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> v)
Description copied from class: AbstractVisitor
Simply returns AbstractVisitor.result.

Specified by:
visitVariableExp in interface Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitVariableExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

handleOperationCallExp

protected java.util.Set<VariableExp> handleOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> callExp,
                                                            java.util.Set<VariableExp> sourceResult,
                                                            java.util.List<java.util.Set<VariableExp>> argumentResults)
For an operation call it's not sure that the argument expression(s) will actually be evaluated. Examples of unused argument expressions are ->at(...) expressions on empty collections where the partial evaluator may cut that short to invalid as well as Boolean shortcut evaluation.

Overrides:
handleOperationCallExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
callExp - the operation call expression
sourceResult - the result of visiting the expression's source
argumentResults - the results of visiting the expression's arguments, or an empty list if there are no arguments
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitOperationCallExp(OperationCallExp)

handlePropertyCallExp

protected java.util.Set<VariableExp> handlePropertyCallExp(PropertyCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> callExp,
                                                           java.util.Set<VariableExp> sourceResult,
                                                           java.util.List<java.util.Set<VariableExp>> qualifierResults)
Description copied from class: AbstractVisitor
Visits the specified property call with the results of visiting its source and qualifiers (if any). Note that in the case of a property call expression as a qualifier of an association class call, the property call does not have a source and, therefore, the sourceResult will be null in that case.

Overrides:
handlePropertyCallExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
callExp - the property call expression, if there is a source
sourceResult - the result of visiting the expression's source
qualifierResults - the results of visiting the expression's qualifiers, or an empty list if there are no qualifiers
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitPropertyCallExp(PropertyCallExp)

handleIfExp

protected java.util.Set<VariableExp> handleIfExp(IfExp<org.eclipse.emf.ecore.EClassifier> ifExp,
                                                 java.util.Set<VariableExp> conditionResult,
                                                 java.util.Set<VariableExp> thenResult,
                                                 java.util.Set<VariableExp> elseResult)
An if-expression inevitably uses all variables that are inevitably used in the condition plus those inevitably used in both, the then and the else branch.

Overrides:
handleIfExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
ifExp - the if expression
conditionResult - the result of visiting the expression's condition
thenResult - the result of visiting the expression's then
elseResult - the result of visiting the expression's else
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitIfExp(IfExp)

handleTupleLiteralExp

protected java.util.Set<VariableExp> handleTupleLiteralExp(TupleLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> literalExp,
                                                           java.util.List<java.util.Set<VariableExp>> partResults)
Description copied from class: AbstractVisitor
Visits the specified tuple literal expression with the results of visiting its parts (if any).

Overrides:
handleTupleLiteralExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
literalExp - the tuple literal expression
partResults - the results of visiting the expression's parts, or an empty list if there are no parts
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitTupleLiteralExp(TupleLiteralExp)

handleTupleLiteralPart

protected java.util.Set<VariableExp> handleTupleLiteralPart(TupleLiteralPart<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> part,
                                                            java.util.Set<VariableExp> valueResult)
Description copied from class: AbstractVisitor
Visits the specified tuple literal part with the results of visiting its value (if any).

Overrides:
handleTupleLiteralPart in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
part - the tuple literal part
valueResult - the result of visiting the expression's value, or null if it has no value
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitTupleLiteralPart(TupleLiteralPart)

handleLetExp

protected java.util.Set<VariableExp> handleLetExp(LetExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> letExp,
                                                  java.util.Set<VariableExp> variableResult,
                                                  java.util.Set<VariableExp> inResult)
For a let expression, all variables inevitably used in the variable's initialization expression as well as all variables inevitably used in the in expression are used inevitably by the let expression.

Overrides:
handleLetExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
letExp - the let expression
variableResult - the result of visiting the expression's variable
inResult - the result of visiting the expression's in expression
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitLetExp(LetExp)

handleCollectionLiteralExp

protected java.util.Set<VariableExp> handleCollectionLiteralExp(CollectionLiteralExp<org.eclipse.emf.ecore.EClassifier> literalExp,
                                                                java.util.List<java.util.Set<VariableExp>> partResults)
Description copied from class: AbstractVisitor
Visits the specified collection literal expression with the results of visiting its parts (if any).

Overrides:
handleCollectionLiteralExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
literalExp - the collection literal expression
partResults - the results of visiting the expression's parts, or an empty list if there are no parts
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitCollectionLiteralExp(CollectionLiteralExp)

handleCollectionItem

protected java.util.Set<VariableExp> handleCollectionItem(CollectionItem<org.eclipse.emf.ecore.EClassifier> item,
                                                          java.util.Set<VariableExp> itemResult)
Description copied from class: AbstractVisitor
Visits the specified collection item with the result of visiting its item expression.

Overrides:
handleCollectionItem in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
item - the collection item
itemResult - the result of visiting the item's item expression
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitCollectionItem(CollectionItem)

handleCollectionRange

protected java.util.Set<VariableExp> handleCollectionRange(CollectionRange<org.eclipse.emf.ecore.EClassifier> range,
                                                           java.util.Set<VariableExp> firstResult,
                                                           java.util.Set<VariableExp> lastResult)
Description copied from class: AbstractVisitor
Visits the specified collection range with the results of visiting its first and last expressions.

Overrides:
handleCollectionRange in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
range - the collection range
firstResult - the result of visiting the range's first expression
lastResult - the result of visiting the range's last expression
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitCollectionRange(CollectionRange)

handleIteratorExp

protected java.util.Set<VariableExp> handleIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp,
                                                       java.util.Set<VariableExp> sourceResult,
                                                       java.util.List<java.util.Set<VariableExp>> variableResults,
                                                       java.util.Set<VariableExp> bodyResult)
Description copied from class: AbstractVisitor
Visits the specified iterator expression with the results of visiting its source, its iterator variables, and its body expression.

Overrides:
handleIteratorExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
callExp - the iterator expression
sourceResult - the result of visiting the expression's source
variableResults - the results of visiting the expression's iterator variables
bodyResult - the result of visiting the expression's body
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitIteratorExp(IteratorExp)

handleIterateExp

protected java.util.Set<VariableExp> handleIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp,
                                                      java.util.Set<VariableExp> sourceResult,
                                                      java.util.List<java.util.Set<VariableExp>> variableResults,
                                                      java.util.Set<VariableExp> resultResult,
                                                      java.util.Set<VariableExp> bodyResult)
Description copied from class: AbstractVisitor
Visits the specified iterate expression with the results of visiting its source, its iterator variables, its result variable, and its body expression.

Overrides:
handleIterateExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
callExp - the iterate expression
sourceResult - the result of visiting the expression's source
variableResults - the results of visiting the expression's iterator variables
resultResult - the result of visiting the expressions' result variable
bodyResult - the result of visiting the expression's body
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitIterateExp(IterateExp)

handleExpressionInOCL

protected java.util.Set<VariableExp> handleExpressionInOCL(ExpressionInOCL<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> expression,
                                                           java.util.Set<VariableExp> contextResult,
                                                           java.util.Set<VariableExp> resultResult,
                                                           java.util.List<java.util.Set<VariableExp>> parameterResults,
                                                           java.util.Set<VariableExp> bodyResult)
Description copied from class: AbstractVisitor
Visits the specified expression-in-OCL with the results of visiting its context variable, its result variable (if any), its parameter variables (if any), and its body expression.

Overrides:
handleExpressionInOCL in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
expression - the expression-in-OCL
contextResult - the result of visiting the expression's context variable
resultResult - the result of visiting the expressions' result variable, or null if there is no result variable
parameterResults - the results of visiting the expression's parameter variables, or an empty list if there are none
bodyResult - the result of visiting the expression's body
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitExpressionInOCL(ExpressionInOCL)

handleConstraint

protected java.util.Set<VariableExp> handleConstraint(Constraint constraint,
                                                      java.util.Set<VariableExp> specificationResult)
Description copied from class: AbstractVisitor
Visits the specified constraint with the results of visiting its specification.

Overrides:
handleConstraint in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
constraint - the constraint
specificationResult - the result of visiting the constraint's specification, or null if either it has none or the AbstractVisitor.getSpecification(Object) method is not overridden
Returns:
the accumulated AbstractVisitor.result, by default #see AbstractVisitor.getSpecification(Object)
See Also:
AbstractVisitor.visitConstraint(Object)

handleVariable

protected java.util.Set<VariableExp> handleVariable(Variable<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> variable,
                                                    java.util.Set<VariableExp> initResult)
Description copied from class: AbstractVisitor
Visits the specified variable with the results of visiting its initializer (if any).

Overrides:
handleVariable in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Parameters:
variable - the variable
initResult - the result of visiting the expression's initializer, or null if it has none
Returns:
the accumulated AbstractVisitor.result, by default
See Also:
AbstractVisitor.visitVariable(Variable)

visitOperationCallExp

public java.util.Set<VariableExp> visitOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> callExp)
Description copied from class: AbstractVisitor
Visits the operation-call source and then its arguments. Returns the result of AbstractVisitor.handleOperationCallExp(OperationCallExp, Object, List).

Specified by:
visitOperationCallExp in interface Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitOperationCallExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

visitIteratorExp

public java.util.Set<VariableExp> visitIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp)
Description copied from class: AbstractVisitor
Visits the iterator's source, then its variables, followed by its body expression. Returns the result of AbstractVisitor.handleIteratorExp(IteratorExp, Object, List, Object).

Specified by:
visitIteratorExp in interface Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIteratorExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

visitIterateExp

public java.util.Set<VariableExp> visitIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> callExp)
Description copied from class: AbstractVisitor
Visits the iterate's source, then its iterator variables, result variable, and body expression. Returns the result of AbstractVisitor.handleIterateExp(IterateExp, Object, List, Object, Object).

Specified by:
visitIterateExp in interface Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIterateExp in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

visitExpressionInOCL

public java.util.Set<VariableExp> visitExpressionInOCL(ExpressionInOCL<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> expression)
Description copied from class: AbstractVisitor
Visits the expressions context variable, its parameter variables (if any), its result variable (if any), and finally its body expression. Returns the result of AbstractVisitor.handleExpressionInOCL(ExpressionInOCL, Object, Object, List, Object).

Specified by:
visitExpressionInOCL in interface Visitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitExpressionInOCL in class AbstractVisitor<java.util.Set<VariableExp>,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>

handleOppositePropertyCallExp

protected java.util.Set<VariableExp> handleOppositePropertyCallExp(OppositePropertyCallExp callExp,
                                                                   java.util.Set<VariableExp> sourceResult)

visitOppositePropertyCallExp

public java.util.Set<VariableExp> visitOppositePropertyCallExp(OppositePropertyCallExp callExp)
Visits the property-call source and then its qualifiers (if any). Returns the result of AbstractVisitor.handlePropertyCallExp(PropertyCallExp, Object, List).