Passing anonymous class instance to vararg method raises ClassCastException
Issue #9
resolved
Short test program that exposes the bug:
public class Test {
void m() {
f(new Object() { });
}
void f(Object... params) {
}
}
JastAddJ 7.1.1-42-gfcf05c4 Java SE 7
backtrace:
java.lang.AssertionError: Compilation failed when expected to pass:
Errors:
Fatal exception while processing tests/type/anonymousdecl/Test.java:
java.lang.ClassCastException: AST.Opt cannot be cast to AST.List
at AST.AnonymousDecl.getImplementsListNoTransform(AnonymousDecl.java:521)
at AST.ClassDecl.Define_TypeDecl_hostType(ClassDecl.java:2088)
at AST.ASTNode.Define_TypeDecl_hostType(ASTNode.java:1723)
at AST.BodyDecl.hostType(BodyDecl.java:518)
at AST.ConstructorDecl.accessibleFrom_compute(ConstructorDecl.java:1099)
at AST.ConstructorDecl.accessibleFrom(ConstructorDecl.java:1091)
at AST.Expr.chooseConstructor(Expr.java:199)
at AST.ClassInstanceExpr.decls_compute(ClassInstanceExpr.java:939)
at AST.ClassInstanceExpr.decls(ClassInstanceExpr.java:930)
at AST.ClassInstanceExpr.decl_compute(ClassInstanceExpr.java:970)
at AST.ClassInstanceExpr.decl(ClassInstanceExpr.java:962)
at AST.ClassInstanceExpr.transformation(ClassInstanceExpr.java:761)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.MethodAccess.refined_Transformations_MethodAccess_transformation(MethodAccess.java:316)
at AST.MethodAccess.transformation(MethodAccess.java:832)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.MethodDecl.transformation(MethodDecl.java:554)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.ASTNode.transformation(ASTNode.java:570)
at AST.TypeDecl.transformation(TypeDecl.java:1392)
at AST.CompilationUnit.transformation(CompilationUnit.java:249)
at org.jastadd.jastaddj.JavaCompiler.processNoErrors(JavaCompiler.java:39)
at AST.Frontend.process(Frontend.java:87)
at org.jastadd.jastaddj.JavaCompiler.compile(JavaCompiler.java:23)
at org.jastadd.jastaddj.JavaCompiler.main(JavaCompiler.java:18)
Comments (4)
-
reporter -
reporter I put some code in
getImplementsListNoTransform
to see what children theAnonymousDecl
had. It turns out that the child at index 3 changes from Opt to List at some point. -
reporter The error is caused by a problem in the JastAdd-generated
fullCopy()
method. -
reporter - changed status to resolved
- Log in to comment
This is likely caused by an error in JastAdd2.