Search in sources :

Example 1 with CastExpr

use of com.github.javaparser.ast.expr.CastExpr in project vue-gwt by Axellience.

the class TemplateParser method processEventParameter.

/**
 * Process the $event variable passed on v-on. This variable must have a valid cast in front.
 * @param expression The currently processed expression
 * @param nameExpr The variable we are processing
 * @param parameters The parameters this expression depends on
 */
private void processEventParameter(Expression expression, NameExpr nameExpr, List<VariableInfo> parameters) {
    if (nameExpr.getParentNode().isPresent() && nameExpr.getParentNode().get() instanceof CastExpr) {
        CastExpr castExpr = (CastExpr) nameExpr.getParentNode().get();
        parameters.add(new VariableInfo(castExpr.getType().toString(), "$event"));
    } else {
        logger.error("\"$event\" should always be casted to it's intended type. Example: @click=\"doSomething((NativeEvent) $event)\".", expression.toString());
    }
}
Also used : VariableInfo(com.axellience.vuegwt.processors.component.template.parser.variable.VariableInfo) LocalVariableInfo(com.axellience.vuegwt.processors.component.template.parser.variable.LocalVariableInfo) CastExpr(com.github.javaparser.ast.expr.CastExpr)

Example 2 with CastExpr

use of com.github.javaparser.ast.expr.CastExpr in project javaparser by javaparser.

the class JavaParserTest method rangeOfLambdaBody.

@Test
public void rangeOfLambdaBody() {
    String code = "class A {" + EOL + "  Object f() {" + EOL + "    return (Comparator<Map.Entry<K, V>> & Serializable)(c1, c2) -> c1.getKey().compareTo(c2.getKey()); " + EOL + "}}";
    CompilationUnit cu = JavaParser.parse(code);
    MethodDeclaration methodDeclaration = cu.getClassByName("A").get().getMember(0).asMethodDeclaration();
    ReturnStmt returnStmt = methodDeclaration.getBody().get().getStatement(0).asReturnStmt();
    CastExpr castExpr = returnStmt.getExpression().get().asCastExpr();
    LambdaExpr lambdaExpr = castExpr.getExpression().asLambdaExpr();
    Statement lambdaBody = lambdaExpr.getBody();
    assertEquals(range(3, 68, 3, 101), lambdaBody.getRange().get());
}
Also used : CompilationUnit(com.github.javaparser.ast.CompilationUnit) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) LambdaExpr(com.github.javaparser.ast.expr.LambdaExpr) CastExpr(com.github.javaparser.ast.expr.CastExpr) Test(org.junit.Test)

Example 3 with CastExpr

use of com.github.javaparser.ast.expr.CastExpr in project javaparser by javaparser.

the class JavaParserTest method rangeOfCastNonIntersection.

@Test
public void rangeOfCastNonIntersection() {
    String code = "class A {" + EOL + "  Object f() {" + EOL + "    return (Comparator<Map.Entry<K, V>>               )(c1, c2) -> c1.getKey().compareTo(c2.getKey()); " + EOL + "}}";
    CompilationUnit cu = JavaParser.parse(code);
    MethodDeclaration methodDeclaration = cu.getClassByName("A").get().getMember(0).asMethodDeclaration();
    ReturnStmt returnStmt = methodDeclaration.getBody().get().getStatement(0).asReturnStmt();
    CastExpr castExpr = returnStmt.getExpression().get().asCastExpr();
    assertEquals(range(3, 12, 3, 101), castExpr.getRange().get());
}
Also used : CompilationUnit(com.github.javaparser.ast.CompilationUnit) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) CastExpr(com.github.javaparser.ast.expr.CastExpr) Test(org.junit.Test)

Example 4 with CastExpr

use of com.github.javaparser.ast.expr.CastExpr in project javaparser by javaparser.

the class JavaParserTest method rangeOfCast.

@Test
public void rangeOfCast() {
    String code = "class A {" + EOL + "  Object f() {" + EOL + "    return (Comparator<Map.Entry<K, V>> & Serializable)(c1, c2) -> c1.getKey().compareTo(c2.getKey()); " + EOL + "}}";
    CompilationUnit cu = JavaParser.parse(code);
    MethodDeclaration methodDeclaration = cu.getClassByName("A").get().getMember(0).asMethodDeclaration();
    ReturnStmt returnStmt = methodDeclaration.getBody().get().getStatement(0).asReturnStmt();
    CastExpr castExpr = returnStmt.getExpression().get().asCastExpr();
    assertEquals(range(3, 12, 3, 101), castExpr.getRange().get());
}
Also used : CompilationUnit(com.github.javaparser.ast.CompilationUnit) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) CastExpr(com.github.javaparser.ast.expr.CastExpr) Test(org.junit.Test)

Example 5 with CastExpr

use of com.github.javaparser.ast.expr.CastExpr in project drools by kiegroup.

the class CompilerBytecodeLoader method getCompilationUnit.

public <T> CompilationUnit getCompilationUnit(Class<T> clazz, String templateResourcePath, String cuPackage, String cuClass, String feelExpression, Expression theExpression, Set<FieldDeclaration> fieldDeclarations) {
    CompilationUnit cu = parse(CompilerBytecodeLoader.class.getResourceAsStream(templateResourcePath));
    cu.setPackageDeclaration(cuPackage);
    final String className = templateResourcePath.substring(1, templateResourcePath.length() - 5);
    ClassOrInterfaceDeclaration classSource = cu.getClassByName(className).orElseThrow(() -> new IllegalArgumentException("Cannot find class by name " + className));
    classSource.setName(cuClass);
    MethodDeclaration lookupMethod = cu.findFirst(MethodDeclaration.class).orElseThrow(() -> new RuntimeException("Something unexpected changed in the template."));
    lookupMethod.setComment(new JavadocComment("   FEEL: " + feelExpression + "   "));
    ReturnStmt returnStmt = lookupMethod.findFirst(ReturnStmt.class).orElseThrow(() -> new RuntimeException("Something unexpected changed in the template."));
    Expression expr;
    if (clazz.equals(CompiledFEELUnaryTests.class)) {
        expr = new CastExpr(StaticJavaParser.parseType("java.util.List"), new EnclosedExpr(theExpression));
    } else {
        expr = theExpression;
    }
    returnStmt.setExpression(expr);
    List<ClassOrInterfaceDeclaration> classDecls = cu.findAll(ClassOrInterfaceDeclaration.class);
    if (classDecls.size() != 1) {
        throw new RuntimeException("Something unexpected changed in the template.");
    }
    ClassOrInterfaceDeclaration classDecl = classDecls.get(0);
    fieldDeclarations.stream().filter(fd -> !isUnaryTest(fd)).sorted(new SortFieldDeclarationStrategy()).forEach(classDecl::addMember);
    fieldDeclarations.stream().filter(fd -> fd.getVariable(0).getName().asString().startsWith("UT")).sorted(new SortFieldDeclarationStrategy()).forEach(classDecl::addMember);
    if (generateClassListener != null) {
        generateClassListener.generatedClass(cu);
    }
    LOG.debug("{}", cu);
    return cu;
}
Also used : CompilationUnit(com.github.javaparser.ast.CompilationUnit) ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) JavadocComment(com.github.javaparser.ast.comments.JavadocComment) Expression(com.github.javaparser.ast.expr.Expression) CastExpr(com.github.javaparser.ast.expr.CastExpr) EnclosedExpr(com.github.javaparser.ast.expr.EnclosedExpr) ReturnStmt(com.github.javaparser.ast.stmt.ReturnStmt)

Aggregations

CastExpr (com.github.javaparser.ast.expr.CastExpr)32 Expression (com.github.javaparser.ast.expr.Expression)21 NameExpr (com.github.javaparser.ast.expr.NameExpr)13 MethodCallExpr (com.github.javaparser.ast.expr.MethodCallExpr)11 Test (org.junit.Test)9 ClassOrInterfaceType (com.github.javaparser.ast.type.ClassOrInterfaceType)7 CompilationUnit (com.github.javaparser.ast.CompilationUnit)6 MethodDeclaration (com.github.javaparser.ast.body.MethodDeclaration)6 EnclosedExpr (com.github.javaparser.ast.expr.EnclosedExpr)6 Type (com.github.javaparser.ast.type.Type)6 TypedExpression (org.drools.modelcompiler.builder.generator.TypedExpression)6 NodeList (com.github.javaparser.ast.NodeList)5 StringLiteralExpr (com.github.javaparser.ast.expr.StringLiteralExpr)5 ThisExpr (com.github.javaparser.ast.expr.ThisExpr)5 LambdaExpr (com.github.javaparser.ast.expr.LambdaExpr)4 UnificationTypedExpression (org.drools.modelcompiler.builder.generator.UnificationTypedExpression)4 DrlNameExpr (org.drools.mvel.parser.ast.expr.DrlNameExpr)4 SerializableFunction (org.kie.pmml.api.iinterfaces.SerializableFunction)4 Node (com.github.javaparser.ast.Node)3 AssignExpr (com.github.javaparser.ast.expr.AssignExpr)3