Class InsertIsPresentChecksVisitor
- All Implemented Interfaces:
CommonExpressionsVisitor2,de.monticore.visitor.IVisitor
This visitor inserts isPresent()-checks into expressions that contain optional variables.
Let $O be an optional variable in this expression: isValid($O). In case that no value is present for $O, the evaluation of this expression would produce a NoSuchElementException. In order to prevent this we add an isPresent()-check to the expression like this: !$O.isPresent || isValid($O)
Additionally we have to consider the context of the optional. The isPresent-Check has to be implemented differently depending on whether the optional is used inside an OR-Expression or an AND-Expression.
Examples for normal variable $A and optional variable $O:
$A && $O results in $A && (!$O.isPresent || isValid($O))
$A || $O results in $A || ($O.isPresent && isValid($O))
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HierarchyHelperprotected List<ASTMatchingObject> boolean -
Constructor Summary
ConstructorsConstructorDescriptionInsertIsPresentChecksVisitor(List<ASTMatchingObject> lhsObjects, HierarchyHelper hierarchyHelper, ASTExpression subConstraint) -
Method Summary
Modifier and TypeMethodDescriptionreplaceNode(ASTExpression node) voidvoidvisit(ASTBooleanNotExpression node) voidvoidvisit(ASTBracketExpression node) voidvisit(ASTCallExpression node) voidvisit(ASTEqualsExpression node) voidvoidvisit(ASTLogicalNotExpression node) voidvisit(ASTPlusExpression node) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.monticore.expressions.commonexpressions._visitor.CommonExpressionsVisitor2
endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitMethods inherited from interface de.monticore.visitor.IVisitor
endVisit, endVisit, endVisit, endVisit, visit, visit, visit, visit
-
Field Details
-
optionalInOrPresent
public boolean optionalInOrPresent -
lhsObjects
-
hierarchyHelper
-
subConstraint
-
-
Constructor Details
-
InsertIsPresentChecksVisitor
public InsertIsPresentChecksVisitor(List<ASTMatchingObject> lhsObjects, HierarchyHelper hierarchyHelper, ASTExpression subConstraint)
-
-
Method Details
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
replaceNode
-