Exception in conditional expression type analysis with null operand
Issue #120
resolved
ExtendJ 7.1.1-327-g10a33c4 Java SE 8
Test case:
// .result=COMPILE_ERR_OUTPUT public class Test { Object f = cond() ? new Object() : (o==null) ? null : o; boolean cond() { return System.currentTimeMillis() % 2 == 1; } }
Throws exception:
[junit] [FAIL] runTest[jastaddj/conditional_expr_01f](tests.jastaddj.TestJava7) [junit] Error output files differ expected:<Errors: [junit] [tests/jastaddj/conditional_expr_01f/Test.java:5,10: [junit] Semantic Error: no field named o is accessible [junit] tests/jastaddj/conditional_expr_01f/Test.java:5,28: [junit] Semantic Error: no field named o is accessible]> but was:<Errors: [junit] [Fatal exception while processing tests/jastaddj/conditional_expr_01f/Test.java: [junit] java.lang.Error: Operation not supported for @primitive.null, AST.NullType [junit] at AST.LUBType.addSupertypes(LUBType.java:254) [junit] at AST.LUBType.ST(LUBType.java:212) [junit] at AST.LUBType.EST(LUBType.java:196) [junit] at AST.LUBType.EC(LUBType.java:33) [junit] at AST.LUBType.MEC(LUBType.java:51) [junit] at AST.LUBType.lub_compute(LUBType.java:723) [junit] at AST.LUBType.lub(LUBType.java:706) [junit] at AST.LUBType.supertypeClassDecl(LUBType.java:827) [junit] at AST.ClassDecl.subtype(ClassDecl.java:2240) [junit] at AST.ClassDecl.instanceOf_compute(ClassDecl.java:1850) [junit] at AST.ClassDecl.instanceOf(ClassDecl.java:1838) [junit] at AST.ReferenceType.wideningConversionTo(ReferenceType.java:429) [junit] at AST.TypeDecl.refined_TypeConversion_TypeDecl_assignConversionTo_TypeDecl_Expr(TypeDecl.java:1871) [junit] at AST.TypeDecl.assignConversionTo(TypeDecl.java:3639) [junit] at AST.ConditionalExpr.refined_TypeAnalysis_ConditionalExpr_type(ConditionalExpr.java:405) [junit] at AST.ConditionalExpr.refined_AutoBoxing_ConditionalExpr_type(ConditionalExpr.java:429) [junit] at AST.ConditionalExpr.type_compute(ConditionalExpr.java:611) [junit] at AST.ConditionalExpr.type(ConditionalExpr.java:598) [junit] at AST.FieldDeclaration.typeCheck(FieldDeclaration.java:203) [junit] at AST.ASTNode.collectErrors(ASTNode.java:1194) [junit] at AST.ASTNode.collectErrors(ASTNode.java:1202) [junit] at AST.ASTNode.collectErrors(ASTNode.java:1202) [junit] at AST.ClassDecl.collectErrors(ClassDecl.java:53) [junit] at AST.ASTNode.collectErrors(ASTNode.java:1202) [junit] at AST.ASTNode.collectErrors(ASTNode.java:1202) [junit] at AST.Frontend.processCompilationUnit(Frontend.java:216) [junit] at org.jastadd.extendj.JavaCompiler.processCompilationUnit(JavaCompiler.java:92) [junit] at AST.Frontend.run(Frontend.java:136) [junit] at org.jastadd.extendj.JavaCompiler.run(JavaCompiler.java:86) [junit] at org.jastadd.extendj.JavaCompiler.main(JavaCompiler.java:34)]> [junit] Test completed: 6 runs, 1 failures, 0 errors [junit] Test tests.jastaddj.TestJava7 FAILED
Comments (3)
-
reporter -
reporter - edited description
-
reporter - changed status to resolved
- Log in to comment
Added regression test for null in conditional expr
see
#120(bitbucket)→ <<cset 1b6092ddc1d3>>