public boolean isBooleanAndOrOr(XAbstractFeatureCall featureCall) { return isOperatorFromExtension(featureCall, OperatorMapping.AND, BooleanExtensions.class) || isOperatorFromExtension(featureCall, OperatorMapping.OR, BooleanExtensions.class); }
public boolean isOperatorFromExtension(XExpression expression, QualifiedName operatorSymbol, Class<?> definingExtensionClass) { return expression instanceof XAbstractFeatureCall && isOperatorFromExtension((XAbstractFeatureCall) expression, operatorSymbol, definingExtensionClass); }
if (isOperatorFromExtension(featureCall, OperatorMapping.MINUS_MINUS, DoubleExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.PLUS_PLUS, DoubleExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.MINUS_MINUS, FloatExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.PLUS_PLUS, FloatExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.MINUS_MINUS, LongExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.PLUS_PLUS, LongExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.MINUS_MINUS, IntegerExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.PLUS_PLUS, IntegerExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.MINUS_MINUS, ShortExtensions.class)) { return true; if (isOperatorFromExtension(featureCall, OperatorMapping.PLUS_PLUS, ShortExtensions.class)) { return true;
public boolean isShortCircuitOperation(XAbstractFeatureCall featureCall) { if (featureCall instanceof XBinaryOperation) { if (isOperatorFromExtension(featureCall, OperatorMapping.ELVIS, ObjectExtensions.class)) return true; else return isBooleanAndOrOr(featureCall); } return false; }
public boolean isOperatorFromExtension(XAbstractFeatureCall featureCall, QualifiedName operatorSymbol, Class<?> definingExtensionClass) { return isOperatorFromExtension(featureCall, featureCall.getConcreteSyntaxFeatureName(), operatorSymbol, definingExtensionClass); }
protected Object _doEvaluate(XSetLiteral literal, IEvaluationContext context, CancelIndicator indicator) { if(isType(literal, Map.class)) { Map<Object, Object> map = newHashMap(); for(XExpression element: literal.getElements()) { if (indicator.isCanceled()) throw new InterpreterCanceledException(); if (expressionHelper.isOperatorFromExtension(element, OperatorMapping.MAPPED_TO, ObjectExtensions.class)) { map.put(internalEvaluate(((XBinaryOperation)element).getLeftOperand(), context, indicator), internalEvaluate(((XBinaryOperation)element).getRightOperand(), context, indicator)); } else if (isType(element, Pair.class)) { Pair<?, ?> pair = (Pair<?, ?>) internalEvaluate(element, context, indicator); map.put(pair == null ? null : pair.getKey(), pair == null ? null : pair.getValue()); } } return Collections.unmodifiableMap(map); } else { Set<Object> set = newHashSet(); for(XExpression element: literal.getElements()) { if (indicator.isCanceled()) throw new InterpreterCanceledException(); set.add(internalEvaluate(element, context, indicator)); } return Collections.unmodifiableSet(set); } }
XExpression right = binaryOperation.getRightOperand(); if (right != null && right.eClass() == XbasePackage.Literals.XNULL_LITERAL || left != null && left.eClass() == XbasePackage.Literals.XNULL_LITERAL) { boolean equalsComparison = expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.EQUALS, ObjectExtensions.class) || expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.NOT_EQUALS, ObjectExtensions.class); if(equalsComparison || expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.TRIPLE_NOT_EQUALS, ObjectExtensions.class) || expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.TRIPLE_EQUALS, ObjectExtensions.class)) { if(right instanceof XNullLiteral) { LightweightTypeReference leftType = getActualType(left); } else if(expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.ELVIS, ObjectExtensions.class)) { LightweightTypeReference leftType = getActualType(left); if(leftType.isPrimitive()) error("The operator '" + operatorSymbol + "' is undefined for arguments of type " + leftType.getHumanReadableName(), binaryOperation, null, PRIMITIVE_COMPARED_TO_NULL); } else if(expressionHelper.isOperatorFromExtension(binaryOperation, operatorSymbol, OperatorMapping.ELVIS, ObjectExtensions.class)) { LightweightTypeReference leftType = getActualType(left); if(leftType.isPrimitive())