use of org.drools.mvelcompiler.ast.UnalteredTypedExpression in project drools by kiegroup.
the class RHSPhase method visit.
@Override
public TypedExpression visit(ArrayAccessExpr n, Context arg) {
TypedExpression name = n.getName().accept(this, arg);
Optional<Type> type = name.getType();
if (type.filter(TypeUtils::isCollection).isPresent()) {
return new ListAccessExprT(name, n.getIndex(), type.get());
}
return new UnalteredTypedExpression(n, type.orElse(null));
}
use of org.drools.mvelcompiler.ast.UnalteredTypedExpression in project drools by kiegroup.
the class LHSPhase method visit.
@Override
public TypedExpression visit(ArrayAccessExpr n, Void arg) {
if (parentIsExpressionStmt(n)) {
return rhsOrError();
}
TypedExpression name = n.getName().accept(this, arg);
Optional<Type> type = name.getType();
if (type.filter(TypeUtils::isCollection).isPresent()) {
Expression index = n.getIndex();
if (index.isStringLiteralExpr() || index.isNameExpr()) {
return new MapPutExprT(name, index, rhsOrNull(), name.getType());
} else {
return new ListAccessExprT(name, index, type.get());
}
}
return new UnalteredTypedExpression(n, type.orElse(null));
}
use of org.drools.mvelcompiler.ast.UnalteredTypedExpression in project drools by kiegroup.
the class LHSPhase method visit.
@Override
public TypedExpression visit(FieldAccessExpr n, Void arg) {
logPhase("FieldAccessExpr {}", n);
if (parentIsExpressionStmt(n)) {
return rhsOrError();
}
TypedExpression fieldAccessScope = n.getScope().accept(this, arg);
n.getName().accept(this, arg);
if (parentIsArrayAccessExpr(n)) {
return tryParseItAsMap(n, fieldAccessScope).map(Optional::of).orElseGet(() -> tryParseItAsSetter(n, fieldAccessScope, getRHSType())).orElse(new UnalteredTypedExpression(n));
} else {
return tryParseAsArithmeticExpression(n, fieldAccessScope).map(Optional::of).orElseGet(() -> tryParseItAsSetter(n, fieldAccessScope, getRHSType())).orElse(new UnalteredTypedExpression(n));
}
}
Aggregations