### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core
Index: buildnotes_jdt-core.html
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/buildnotes_jdt-core.html,v
retrieving revision 1.6763
diff -u -r1.6763 buildnotes_jdt-core.html
--- buildnotes_jdt-core.html 24 Nov 2008 10:21:59 -0000 1.6763
+++ buildnotes_jdt-core.html 24 Nov 2008 12:58:57 -0000
@@ -47,9 +47,27 @@
Project org.eclipse.jdt.core v_926
(cvs).
if (false) deadCode();
.
+This diagnosis is controlled by option:
+JavaCore.COMPILER_PB_DEAD_CODE
and produces a problem marker which ID is IProblem.DeadCode
problem ID.
++* Compiler option ID: Reporting Dead Code. +* When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo(); +* is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo() is +* going to be signaled as being dead code. +* Option id:"org.eclipse.jdt.core.compiler.problem.deadCode" +* Possible values:{ "error", "warning", "ignore" } +* Default:"ignore" ++
When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo();
+ * is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo()
is
+ * going to be signaled as being dead code.
+ *
"org.eclipse.jdt.core.compiler.problem.deadCode"
{ "error", "warning", "ignore" }
"ignore"
When enabled, the compiler will issue an error or a warning whenever
* an enum constant has no corresponding case label in an enum switch
Index: batch/org/eclipse/jdt/internal/compiler/batch/Main.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java,v
retrieving revision 1.336
diff -u -r1.336 Main.java
--- batch/org/eclipse/jdt/internal/compiler/batch/Main.java 20 Nov 2008 15:55:04 -0000 1.336
+++ batch/org/eclipse/jdt/internal/compiler/batch/Main.java 24 Nov 2008 12:58:58 -0000
@@ -3139,6 +3139,11 @@
CompilerOptions.OPTION_ReportDiscouragedReference,
isEnabling ? CompilerOptions.WARNING : CompilerOptions.IGNORE);
return;
+ } else if (token.equals("deadCode")) { //$NON-NLS-1$
+ this.options.put(
+ CompilerOptions.OPTION_ReportDeadCode,
+ isEnabling ? CompilerOptions.WARNING : CompilerOptions.IGNORE);
+ return;
}
break;
case 'e' :
Index: compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java,v
retrieving revision 1.209
diff -u -r1.209 CompilerOptions.java
--- compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java 10 Oct 2008 17:24:31 -0000 1.209
+++ compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java 24 Nov 2008 12:59:01 -0000
@@ -123,6 +123,7 @@
public static final String OPTION_ReportComparingIdentical = "org.eclipse.jdt.core.compiler.problem.comparingIdentical"; //$NON-NLS-1$
public static final String OPTION_ReportMissingSynchronizedOnInheritedMethod = "org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod"; //$NON-NLS-1$
public static final String OPTION_ReportMissingHashCodeMethod = "org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod"; //$NON-NLS-1$
+ public static final String OPTION_ReportDeadCode = "org.eclipse.jdt.core.compiler.problem.deadCode"; //$NON-NLS-1$
// Backward compatibility
public static final String OPTION_ReportInvalidAnnotation = "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"; //$NON-NLS-1$
@@ -225,7 +226,8 @@
public static final int MissingSynchronizedModifierInInheritedMethod= IrritantSet.GROUP1 | ASTNode.Bit29;
// group 2
- public static final int ShouldImplementHashcode= IrritantSet.GROUP2 | ASTNode.Bit1;
+ public static final int ShouldImplementHashcode = IrritantSet.GROUP2 | ASTNode.Bit1;
+ public static final int DeadCode = IrritantSet.GROUP2 | ASTNode.Bit2;
// Map: String optionKey --> Long irritant>
private static Map OptionToIrritants;
@@ -478,6 +480,8 @@
return OPTION_ReportMissingSynchronizedOnInheritedMethod;
case ShouldImplementHashcode :
return OPTION_ReportMissingHashCodeMethod;
+ case DeadCode :
+ return OPTION_ReportDeadCode;
}
return null;
}
@@ -580,6 +584,7 @@
OPTION_ReportAnnotationSuperInterface,
OPTION_ReportAssertIdentifier,
OPTION_ReportAutoboxing,
+ OPTION_ReportDeadCode,
OPTION_ReportDeprecation,
OPTION_ReportDiscouragedReference,
OPTION_ReportEmptyStatement,
@@ -893,6 +898,7 @@
optionsMap.put(OPTION_ReportComparingIdentical, getSeverityString(ComparingIdentical));
optionsMap.put(OPTION_ReportMissingSynchronizedOnInheritedMethod, getSeverityString(MissingSynchronizedModifierInInheritedMethod));
optionsMap.put(OPTION_ReportMissingHashCodeMethod, getSeverityString(ShouldImplementHashcode));
+ optionsMap.put(OPTION_ReportDeadCode, getSeverityString(DeadCode));
return optionsMap;
}
@@ -1264,6 +1270,7 @@
if ((optionValue = optionsMap.get(OPTION_ReportComparingIdentical)) != null) updateSeverity(ComparingIdentical, optionValue);
if ((optionValue = optionsMap.get(OPTION_ReportMissingSynchronizedOnInheritedMethod)) != null) updateSeverity(MissingSynchronizedModifierInInheritedMethod, optionValue);
if ((optionValue = optionsMap.get(OPTION_ReportMissingHashCodeMethod)) != null) updateSeverity(ShouldImplementHashcode, optionValue);
+ if ((optionValue = optionsMap.get(OPTION_ReportDeadCode)) != null) updateSeverity(DeadCode, optionValue);
// Javadoc options
if ((optionValue = optionsMap.get(OPTION_DocCommentSupport)) != null) {
@@ -1461,6 +1468,7 @@
buf.append("\n\t- comparing identical expr: ").append(getSeverityString(ComparingIdentical)); //$NON-NLS-1$
buf.append("\n\t- missing synchronized on inherited method: ").append(getSeverityString(MissingSynchronizedModifierInInheritedMethod)); //$NON-NLS-1$
buf.append("\n\t- should implement hashCode() method: ").append(getSeverityString(ShouldImplementHashcode)); //$NON-NLS-1$
+ buf.append("\n\t- dead code: ").append(getSeverityString(DeadCode)); //$NON-NLS-1$
return buf.toString();
}
Index: compiler/org/eclipse/jdt/core/compiler/IProblem.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java,v
retrieving revision 1.210
diff -u -r1.210 IProblem.java
--- compiler/org/eclipse/jdt/core/compiler/IProblem.java 21 Nov 2008 20:03:08 -0000 1.210
+++ compiler/org/eclipse/jdt/core/compiler/IProblem.java 24 Nov 2008 12:58:59 -0000
@@ -426,6 +426,7 @@
int UnhandledExceptionInImplicitConstructorCall = TypeRelated + 147;
// expressions
+ int DeadCode = Internal + 149;
int ArrayReferenceRequired = Internal + 150;
int NoImplicitStringConversionForCharArrayExpression = Internal + 151;
// constant expressions
#P org.eclipse.jdt.core.tests
Index: Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/InitializationTest.java
===================================================================
RCS file: /home/cvs/numbat/org.eclipse.jdt.core.tests/Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/InitializationTest.java,v
retrieving revision 1.119
diff -u -r1.119 InitializationTest.java
--- Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/InitializationTest.java 18 Nov 2008 20:22:39 -0000 1.119
+++ Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/InitializationTest.java 24 Nov 2008 12:59:07 -0000
@@ -78,13 +78,22 @@
" } \n"+
"} \n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 10)\n" +
- " throw new InstantiationException(); \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unhandled exception type InstantiationException\n" +
- "----------\n"
- );
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " throw new InstantiationException(); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 10)\n" +
+ " throw new InstantiationException(); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 10)\n" +
+ " throw new InstantiationException(); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unhandled exception type InstantiationException\n" +
+ "----------\n");
}
/**
* 1FX0DEX: LFCOM:WINNT - NullPointerException compiling final local
@@ -629,18 +638,23 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. WARNING in X.java (at line 8)\n" +
- " } else { \n" +
- " return true; \n" +
- " } \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 11)\n" +
- " System.out.println(\"unreachable\"); \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " for (int k = 1;;k++) { \n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 8)\n" +
+ " } else { \n" +
+ " return true; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 11)\n" +
+ " System.out.println(\"unreachable\"); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
"----------\n"
);
}
@@ -1616,13 +1630,23 @@
" }\n"+
"}\n"
},
- "----------\n" +
- "1. ERROR in dasg00702m5.java (at line 8)\n" +
- " t = b2;\n" +
- " ^^\n" +
- "The local variable b2 may not have been initialized\n" +
- "----------\n"
- );
+ "----------\n" +
+ "1. WARNING in dasg00702m5.java (at line 6)\n" +
+ " if ((t || (b2 = false)) && (true && (true && (true && (false && (b2 = false)))))) {\n" +
+ " ^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in dasg00702m5.java (at line 6)\n" +
+ " if ((t || (b2 = false)) && (true && (true && (true && (false && (b2 = false)))))) {\n" +
+ " } else {\n" +
+ " ^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in dasg00702m5.java (at line 8)\n" +
+ " t = b2;\n" +
+ " ^^\n" +
+ "The local variable b2 may not have been initialized\n" +
+ "----------\n");
}
/*
@@ -1821,26 +1845,62 @@
* jck1.3a - dasg00209
*/
public void test057() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "dasg00209.java",
+ "public class dasg00209 { \n"+
+ " final boolean b; \n"+
+ " { \n"+
+ " if (false && (b = false)); \n"+
+ " } \n"+
+ " dasg00209() { \n"+
+ " if (true && (b = false)); \n"+
+ " } \n"+
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in dasg00209.java (at line 4)\n" +
+ " if (false && (b = false)); \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in dasg00209.java (at line 7)\n" +
+ " if (true && (b = false)); \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
+ "----------\n");
+ return;
+ }
this.runNegativeTest(
- new String[] {
- "dasg00209.java",
- "public class dasg00209 { \n"+
- " final boolean b; \n"+
- " { \n"+
- " if (false && (b = false)); \n"+
- " } \n"+
- " dasg00209() { \n"+
- " if (true && (b = false)); \n"+
- " } \n"+
- "} \n"
- },
- "----------\n" +
- "1. ERROR in dasg00209.java (at line 7)\n" +
- " if (true && (b = false)); \n" +
- " ^\n" +
- "The final field b may already have been assigned\n" +
- "----------\n"
- );
+ new String[] {
+ "dasg00209.java",
+ "public class dasg00209 { \n"+
+ " final boolean b; \n"+
+ " { \n"+
+ " if (false && (b = false)); \n"+
+ " } \n"+
+ " dasg00209() { \n"+
+ " if (true && (b = false)); \n"+
+ " } \n"+
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in dasg00209.java (at line 4)\n" +
+ " if (false && (b = false)); \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in dasg00209.java (at line 4)\n" +
+ " if (false && (b = false)); \n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in dasg00209.java (at line 7)\n" +
+ " if (true && (b = false)); \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
+ "----------\n");
}
/**
@@ -2098,13 +2158,17 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " if (true && (b = false)); \n" +
- " ^\n" +
- "The final field b may already have been assigned\n" +
- "----------\n"
- );
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " boolean ignore = false && (b = false) ? true : true; \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " if (true && (b = false)); \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
+ "----------\n");
}
public void test066() {
this.runNegativeTest(
@@ -2117,16 +2181,21 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " boolean ignore = (false && (b = false) ? (b = true) : (b = false)); \n" +
- " ^\n" +
- "The final field b may already have been assigned\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 4)\n" +
- " boolean ignore = (false && (b = false) ? (b = true) : (b = false)); \n" +
- " ^\n" +
- "The final field b may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " boolean ignore = (false && (b = false) ? (b = true) : (b = false)); \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " boolean ignore = (false && (b = false) ? (b = true) : (b = false)); \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 4)\n" +
+ " boolean ignore = (false && (b = false) ? (b = true) : (b = false)); \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
"----------\n");
}
public void test067() {
@@ -2142,16 +2211,28 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 1)\n" +
- " public class X { \n" +
- " ^\n" +
- "The blank final field b may not have been initialized\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 5)\n" +
- " b = true; \n" +
- " ^\n" +
- "The final field b may already have been assigned\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 1)\n" +
+ " public class X { \n" +
+ " ^\n" +
+ "The blank final field b may not have been initialized\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 4)\n" +
+ " if (false && (b = false)) { \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 4)\n" +
+ " if (false && (b = false)) { \n" +
+ " b = true; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 5)\n" +
+ " b = true; \n" +
+ " ^\n" +
+ "The final field b may already have been assigned\n" +
"----------\n");
}
public void test067a() {
@@ -2210,11 +2291,16 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 3)\n" +
- " X(){ \n" +
- " ^^^\n" +
- "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 3)\n" +
+ " X(){ \n" +
+ " ^^^\n" +
+ "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " blank = 1; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
@@ -2474,16 +2560,29 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " blank = 0; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 8)\n" +
- " blank = 1; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false && (blank = 0)>0) { \n" +
+ " ^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 4)\n" +
+ " if (false && (blank = 0)>0) { \n" +
+ " blank = 0; \n" +
+ " return; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 5)\n" +
+ " blank = 0; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 8)\n" +
+ " blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
"----------\n");
}
@@ -2510,11 +2609,19 @@
" }\n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 3)\n" +
- " X(int i){ \n" +
- " ^^^^^^^^\n" +
- "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 3)\n" +
+ " X(int i){ \n" +
+ " ^^^^^^^^\n" +
+ "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 6)\n" +
+ " if (false){ \n" +
+ " blank = 0; \n" +
+ " return; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
@@ -2540,11 +2647,19 @@
" }\n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 3)\n" +
- " X(int i){ \n" +
- " ^^^^^^^^\n" +
- "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 3)\n" +
+ " X(int i){ \n" +
+ " ^^^^^^^^\n" +
+ "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " if (false){ \n" +
+ " blank = 0; \n" +
+ " return; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
@@ -2567,21 +2682,26 @@
"class E extends Exception { \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " System.out.println(blank); \n" +
- " ^^^^^\n" +
- "The blank final field blank may not have been initialized\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 10)\n" +
- " blank = 1; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
- "----------\n" +
- "3. WARNING in X.java (at line 13)\n" +
- " class E extends Exception { \n" +
- " ^\n" +
- "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " if (false) throw new E(); \n" +
+ " ^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " System.out.println(blank); \n" +
+ " ^^^^^\n" +
+ "The blank final field blank may not have been initialized\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 10)\n" +
+ " blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 13)\n" +
+ " class E extends Exception { \n" +
+ " ^\n" +
+ "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
"----------\n");
}
// see also AssignmentTest#55
@@ -2611,16 +2731,32 @@
"class E extends Exception { \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 14)\n" +
- " blank = 3; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
- "----------\n" +
- "2. WARNING in X.java (at line 20)\n" +
- " class E extends Exception { \n" +
- " ^\n" +
- "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " if (false) { \n" +
+ " blank = 0; \n" +
+ " throw new E(); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 9)\n" +
+ " if (false) { \n" +
+ " blank = 1; \n" +
+ " throw new E(); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 14)\n" +
+ " blank = 3; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 20)\n" +
+ " class E extends Exception { \n" +
+ " ^\n" +
+ "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
"----------\n",
JavacTestOptions.EclipseJustification.EclipseBug235543);
}
@@ -2652,16 +2788,32 @@
"class E extends Exception { \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 14)\n" +
- " blank = 3; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
- "----------\n" +
- "2. WARNING in X.java (at line 20)\n" +
- " class E extends Exception { \n" +
- " ^\n" +
- "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " if (false) { \n" +
+ " //blank = 0; \n" +
+ " throw new E(); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 9)\n" +
+ " if (false) { \n" +
+ " blank = 1; \n" +
+ " throw new E(); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 14)\n" +
+ " blank = 3; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 20)\n" +
+ " class E extends Exception { \n" +
+ " ^\n" +
+ "The serializable class E does not declare a static final serialVersionUID field of type long\n" +
"----------\n",
JavacTestOptions.EclipseJustification.EclipseBug235543);
}
@@ -2681,11 +2833,19 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " blank = 1; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " while (i > 0 && false) { \n" +
+ " blank = 0; \n" +
+ " break; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
"----------\n");
}
@@ -2726,11 +2886,20 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " blank = 2; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " else { \n" +
+ " System.out.println(blank); \n" +
+ " blank = 1; \n" +
+ " blank = 2; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " blank = 2; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
"----------\n");
}
@@ -2750,11 +2919,20 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " blank = 2; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " else { \n" +
+ " System.out.println(blank); \n" +
+ " blank = 1; \n" +
+ " blank = 2; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " blank = 2; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
"----------\n");
}
@@ -2799,26 +2977,31 @@
" }\n"+
"} \n"
},
- "----------\n" +
- "1. WARNING in X.java (at line 3)\n" +
- " final int i = i = 0; \n" +
- " ^^^^^^^^^\n" +
- "The assignment to variable i has no effect\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 3)\n" +
- " final int i = i = 0; \n" +
- " ^\n" +
- "The final local variable i cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n" +
- "3. ERROR in X.java (at line 5)\n" +
- " ((blank2 = 0)>0 || true) \n" +
- " ^^^^^^\n" +
- "The final local variable blank2 cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n" +
- "4. ERROR in X.java (at line 7)\n" +
- " : (blank2 = 2); \n" +
- " ^^^^^^\n" +
- "The final local variable blank2 cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " final int i = i = 0; \n" +
+ " ^^^^^^^^^\n" +
+ "The assignment to variable i has no effect\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 3)\n" +
+ " final int i = i = 0; \n" +
+ " ^\n" +
+ "The final local variable i cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 5)\n" +
+ " ((blank2 = 0)>0 || true) \n" +
+ " ^^^^^^\n" +
+ "The final local variable blank2 cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 7)\n" +
+ " : (blank2 = 2); \n" +
+ " ^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. ERROR in X.java (at line 7)\n" +
+ " : (blank2 = 2); \n" +
+ " ^^^^^^\n" +
+ "The final local variable blank2 cannot be assigned. It must be blank and not using a compound assignment\n" +
"----------\n");
}
@@ -2840,48 +3023,119 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " else blank = 1; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 11)\n" +
- " : (blank2 = 2); \n" +
- " ^^^^^^\n" +
- "The final local variable blank2 may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (true || (blank = 0)>0); \n" +
+ " ^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " else blank = 1; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 5)\n" +
+ " else blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 9)\n" +
+ " (true || (blank2 = 0)>0) \n" +
+ " ^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. ERROR in X.java (at line 11)\n" +
+ " : (blank2 = 2); \n" +
+ " ^^^^^^\n" +
+ "The final local variable blank2 may already have been assigned\n" +
"----------\n");
}
public void test095() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X { \n"+
+ " X(){ \n"+
+ " final int blank; \n" +
+ " if (false && (blank = 0)>0); \n" +
+ " else blank = 1; \n" +
+ " \n" +
+ " final int blank2; \n" +
+ " int i = \n" +
+ " (false && (blank2 = 0)>0) \n" +
+ " ? 1 \n" +
+ " : (blank2 = 2); \n" +
+ " } \n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false && (blank = 0)>0); \n" +
+ " ^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 5)\n" +
+ " else blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 9)\n" +
+ " (false && (blank2 = 0)>0) \n" +
+ " ^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 11)\n" +
+ " : (blank2 = 2); \n" +
+ " ^^^^^^\n" +
+ "The final local variable blank2 may already have been assigned\n" +
+ "----------\n");
+ return;
+ }
this.runNegativeTest(
- new String[] {
- "X.java",
- "public class X { \n"+
- " X(){ \n"+
- " final int blank; \n" +
- " if (false && (blank = 0)>0); \n" +
- " else blank = 1; \n" +
- " \n" +
- " final int blank2; \n" +
- " int i = \n" +
- " (false && (blank2 = 0)>0) \n" +
- " ? 1 \n" +
- " : (blank2 = 2); \n" +
- " } \n" +
- "} \n"
- },
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " else blank = 1; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 11)\n" +
- " : (blank2 = 2); \n" +
- " ^^^^^^\n" +
- "The final local variable blank2 may already have been assigned\n" +
- "----------\n");
+ new String[] {
+ "X.java",
+ "public class X { \n"+
+ " X(){ \n"+
+ " final int blank; \n" +
+ " if (false && (blank = 0)>0); \n" +
+ " else blank = 1; \n" +
+ " \n" +
+ " final int blank2; \n" +
+ " int i = \n" +
+ " (false && (blank2 = 0)>0) \n" +
+ " ? 1 \n" +
+ " : (blank2 = 2); \n" +
+ " } \n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false && (blank = 0)>0); \n" +
+ " ^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 4)\n" +
+ " if (false && (blank = 0)>0); \n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 5)\n" +
+ " else blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 9)\n" +
+ " (false && (blank2 = 0)>0) \n" +
+ " ^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. ERROR in X.java (at line 11)\n" +
+ " : (blank2 = 2); \n" +
+ " ^^^^^^\n" +
+ "The final local variable blank2 may already have been assigned\n" +
+ "----------\n");
}
public void test096() {
@@ -2895,11 +3149,16 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 2)\n" +
- " int foo() { \n" +
- " ^^^^^\n" +
- "This method must return a result of type int\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 2)\n" +
+ " int foo() { \n" +
+ " ^^^^^\n" +
+ "This method must return a result of type int\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 4)\n" +
+ " System.out.println(); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
// test097 replaced by AssignmentTest#56
@@ -2924,16 +3183,21 @@
" }\n"+
"} \n"
},
- "----------\n" +
- "1. WARNING in X.java (at line 8)\n" +
- " blank = 0; \n" +
- " ^^^^^^^^^\n" +
- "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 10)\n" +
- " blank = 1; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 8)\n" +
+ " blank = 0; \n" +
+ " ^^^^^^^^^\n" +
+ "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 8)\n" +
+ " blank = 0; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 10)\n" +
+ " blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
"----------\n");
}
@@ -2954,16 +3218,21 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. WARNING in X.java (at line 8)\n" +
- " blank = 0; \n" +
- " ^^^^^^^^^\n" +
- "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 10)\n" +
- " blank = 1; \n" +
- " ^^^^^\n" +
- "The final field blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 8)\n" +
+ " blank = 0; \n" +
+ " ^^^^^^^^^\n" +
+ "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 8)\n" +
+ " blank = 0; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 10)\n" +
+ " blank = 1; \n" +
+ " ^^^^^\n" +
+ "The final field blank may already have been assigned\n" +
"----------\n");
}
@@ -3103,11 +3372,21 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " blank = 2; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) blank = 1; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " if (true) ; else blank = 1; \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 6)\n" +
+ " blank = 2; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
"----------\n");
}
@@ -3124,11 +3403,21 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " blank = 2; \n" +
- " ^^^^^\n" +
- "The final local variable blank may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " int a = false ? (blank = 1) : 0; \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " int b = true ? 0 : (blank = 1); \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 6)\n" +
+ " blank = 2; \n" +
+ " ^^^^^\n" +
+ "The final local variable blank may already have been assigned\n" +
"----------\n");
}
@@ -3237,16 +3526,25 @@
" }\n" +
"}\n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 9)\n" +
- " i = 2;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " if (true) return; // if this one instead, will diagnose duplicate assignments\n" +
+ " i = 0;\n" +
+ " i = 1;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 9)\n" +
+ " i = 2;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n"
);
}
@@ -3267,11 +3565,20 @@
" }\n" +
"}\n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " i = 0;\n" +
- " ^^^^^^\n" +
- "Unreachable code\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " return;\n" +
+ " i = 0;\n" +
+ " i = 1;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " i = 0;\n" +
+ " ^^^^^^\n" +
+ "Unreachable code\n" +
"----------\n");
}
@@ -4361,11 +4668,26 @@
" }\n" +
"}\n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " if (false) throw new Exception(); // uncaught\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unhandled exception type Exception\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " try {\n" +
+ " try {\n" +
+ " if (false) throw new Exception(); // uncaught\n" +
+ " System.out.println(); // still fake reachable \n" +
+ " } finally {\n" +
+ " System.out.println();\n" +
+ " }\n" +
+ " } catch (InterruptedException e) {\n" +
+ " }\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " if (false) throw new Exception(); // uncaught\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unhandled exception type Exception\n" +
"----------\n");
}
public void test163() {
@@ -4645,11 +4967,19 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " x *= 1;\n" +
- " ^\n" +
- "The final local variable x may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " x = 1;\n" +
+ " x *= 1;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " x *= 1;\n" +
+ " ^\n" +
+ "The final local variable x may already have been assigned\n" +
"----------\n");
}
@@ -4687,11 +5017,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " System.out.println(\"unreachable\");\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 7)\n" +
+ " blank = 1;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " System.out.println(\"unreachable\");\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
"----------\n");
}
Index: Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/FromJacksTest.java
===================================================================
RCS file: /home/cvs/numbat/org.eclipse.jdt.core.tests/Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/FromJacksTest.java,v
retrieving revision 1.27
diff -u -r1.27 FromJacksTest.java
--- Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/FromJacksTest.java 27 Jun 2008 16:02:01 -0000 1.27
+++ Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/FromJacksTest.java 24 Nov 2008 12:59:06 -0000
@@ -15,6 +15,7 @@
import junit.framework.Test;
import org.eclipse.jdt.core.tests.compiler.regression.AbstractRegressionTest;
+import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
public class FromJacksTest extends AbstractRegressionTest {
@@ -431,11 +432,16 @@
"\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " int j = i = 1;\n" +
- " ^\n" +
- "The final field i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " int j = i = 1;\n" +
+ " ^\n" +
+ "The final field i may already have been assigned\n" +
"----------\n");
}
@@ -458,11 +464,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final field i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final field i may already have been assigned\n" +
"----------\n");
}
@@ -485,11 +496,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final field i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final field i may already have been assigned\n" +
"----------\n");
}
@@ -574,11 +590,16 @@
"}\n" +
""
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " ia[false ? x = 0 : 0] += x = 0;\n" +
- " ^\n" +
- "The final local variable x may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " ia[false ? x = 0 : 0] += x = 0;\n" +
+ " ^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 5)\n" +
+ " ia[false ? x = 0 : 0] += x = 0;\n" +
+ " ^\n" +
+ "The final local variable x may already have been assigned\n" +
"----------\n");
}
@@ -599,11 +620,16 @@
"}\n" +
""
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " (false ? x = new X() : null).s += x = null;\n" +
- " ^\n" +
- "The final field x may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " (false ? x = new X() : null).s += x = null;\n" +
+ " ^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 5)\n" +
+ " (false ? x = new X() : null).s += x = null;\n" +
+ " ^\n" +
+ "The final field x may already have been assigned\n" +
"----------\n");
}
@@ -793,11 +819,16 @@
"}\n" +
""
},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " if (true ? true : (x = true));\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (true ? true : (x = true));\n" +
+ " ^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (true ? true : (x = true));\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
"----------\n");
}
@@ -806,22 +837,56 @@
* finals; initialized fields cannot be assigned
*/
public void test035() {
- this.runNegativeTest(
- new String[] {
- "X.java",
- "public class X {\n" +
- " public static void main(String[] args) {\n" +
- " final boolean x = true; // constant\n" +
- " if (false ? x = true : false);\n" +
- " }\n" +
- "}"
- },
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " if (false ? x = true : false);\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n");
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " final boolean x = true; // constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n");
+ return;
+ }
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " final boolean x = true; // constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n");
}
/**
@@ -839,11 +904,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " if (true ? true : (x = true));\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (true ? true : (x = true));\n" +
+ " ^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (true ? true : (x = true));\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
"----------\n");
}
@@ -852,23 +922,58 @@
* finals; initialized fields cannot be assigned
*/
public void test037() {
- this.runNegativeTest(
- new String[] {
- "X.java",
- "public class X {\n" +
- " public static void main(String[] args) {\n" +
- " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
- " if (false ? x = true : false);\n" +
- " }\n" +
- "}\n" +
- ""
- },
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " if (false ? x = true : false);\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n");
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}\n" +
+ ""
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n");
+ return;
+ }
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}\n" +
+ ""
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 4)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n");
}
@@ -877,33 +982,88 @@
* finals; initialized fields cannot be assigned
*/
public void test038() {
- this.runNegativeTest(
- new String[] {
- "X.java",
- "public class X {\n" +
- " public static void main(String[] args) {\n" +
- " try {\n" +
- " throw new Exception();\n" +
- " } catch (final Exception x) {\n" +
- " if (true ? true : ((x = null) == null));\n" +
- " }\n" +
- " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
- " if (false ? x = true : false);\n" +
- " }\n" +
- "}\n" +
- ""
- },
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " if (true ? true : ((x = null) == null));\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 9)\n" +
- " if (false ? x = true : false);\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n");
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " try {\n" +
+ " throw new Exception();\n" +
+ " } catch (final Exception x) {\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " }\n" +
+ " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}\n" +
+ ""
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " ^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 9)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 9)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n");
+ return;
+ }
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " try {\n" +
+ " throw new Exception();\n" +
+ " } catch (final Exception x) {\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " }\n" +
+ " final boolean x = Boolean.TRUE.booleanValue(); // non-constant\n" +
+ " if (false ? x = true : false);\n" +
+ " }\n" +
+ "}\n" +
+ ""
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " ^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " if (true ? true : ((x = null) == null));\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 9)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 9)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "5. WARNING in X.java (at line 9)\n" +
+ " if (false ? x = true : false);\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n");
}
/**
@@ -911,25 +1071,62 @@
* finals; initialized fields cannot be assigned
*/
public void test039() {
- this.runNegativeTest(
- new String[] {
- "X.java",
- "public class X {\n" +
- " public static void main(String[] args) {\n" +
- " try {\n" +
- " throw new Exception();\n" +
- " } catch (final Exception x) {\n" +
- " if (false ? (x = null) == null : false);\n" +
- " }\n" +
- " }\n" +
- "}"
- },
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " if (false ? (x = null) == null : false);\n" +
- " ^\n" +
- "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
- "----------\n");
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " try {\n" +
+ " throw new Exception();\n" +
+ " } catch (final Exception x) {\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " }\n" +
+ " }\n" +
+ "}"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " ^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n");
+ return;
+ }
+ this.runNegativeTest(
+ new String[] {
+ "X.java",
+ "public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " try {\n" +
+ " throw new Exception();\n" +
+ " } catch (final Exception x) {\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " }\n" +
+ " }\n" +
+ "}"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " ^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " ^\n" +
+ "The final local variable x cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 6)\n" +
+ " if (false ? (x = null) == null : false);\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n");
}
/**
* 16.1.3-definite-assignment-pass-3 V is DA after a || b when
@@ -1151,13 +1348,17 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
- "----------\n"
-);
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 9)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n");
}
/**
@@ -1180,11 +1381,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 8)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n");
}
@@ -1354,11 +1560,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 9)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n");
}
/**
@@ -1498,11 +1709,18 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " val = 0;\n" +
- " ^^^\n" +
- "The final field val may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " if (false) {\n" +
+ " val = 1;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 9)\n" +
+ " val = 0;\n" +
+ " ^^^\n" +
+ "The final field val may already have been assigned\n" +
"----------\n");
}
/**
@@ -1901,11 +2119,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 10)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 10)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 12)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
/**
@@ -1934,11 +2157,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 10)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 10)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 12)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
/**
@@ -1966,11 +2194,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 9)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 11)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
/**
@@ -1999,11 +2232,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 15)\n" +
- " i = 2; // i multiply assigned \n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 13)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 15)\n" +
+ " i = 2; // i multiply assigned \n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n");
}
/**
@@ -2030,11 +2268,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 13)\n" +
- " i = 2; // i multiply assigned \n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 11)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 13)\n" +
+ " i = 2; // i multiply assigned \n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n");
}
@@ -2116,11 +2359,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 9)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 11)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
@@ -2186,11 +2434,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 9)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " i = 1;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 9)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n");
}
Index: Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/NegativeTest.java
===================================================================
RCS file: /home/cvs/numbat/org.eclipse.jdt.core.tests/Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/NegativeTest.java,v
retrieving revision 1.319
diff -u -r1.319 NegativeTest.java
--- Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/NegativeTest.java 21 Nov 2008 20:03:10 -0000 1.319
+++ Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/NegativeTest.java 24 Nov 2008 12:59:10 -0000
@@ -1126,26 +1126,30 @@
"}\n" +
"}",
},
- "----------\n" +
- "1. ERROR in p\\A1.java (at line 10)\n" +
- " message += System.out.println(3);\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "The operator += is undefined for the argument type(s) String, void\n" +
- "----------\n" +
- "2. ERROR in p\\A1.java (at line 15)\n" +
- " message += System.out.println(3);\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "The operator += is undefined for the argument type(s) String, void\n" +
- "----------\n" +
- "3. WARNING in p\\A1.java (at line 29)\n" +
- " } finally {\n" +
- " i = 1;\n" +
- " continue;\n" +
- " }\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "finally block does not complete normally\n" +
- "----------\n"
- );
+ "----------\n" +
+ "1. ERROR in p\\A1.java (at line 10)\n" +
+ " message += System.out.println(3);\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "The operator += is undefined for the argument type(s) String, void\n" +
+ "----------\n" +
+ "2. ERROR in p\\A1.java (at line 15)\n" +
+ " message += System.out.println(3);\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "The operator += is undefined for the argument type(s) String, void\n" +
+ "----------\n" +
+ "3. WARNING in p\\A1.java (at line 29)\n" +
+ " } finally {\n" +
+ " i = 1;\n" +
+ " continue;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "finally block does not complete normally\n" +
+ "----------\n" +
+ "4. WARNING in p\\A1.java (at line 39)\n" +
+ " System.out.println(\"Hello\");\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n");
}
public void test003() {
@@ -3382,14 +3386,14 @@
" } finally {\n" +
" if (true)\n" +
" return 2;\n" +
- " };\n" +
+ " }\n" +
" return 1;\n" +
"} \n" +
"int foo11() {\n" +
" synchronized (this) {\n" +
" if (true)\n" +
" return 1;\n" +
- " };\n" +
+ " }\n" +
" return 2;\n" +
"} \n" +
"int foo12() {\n" +
@@ -3418,7 +3422,7 @@
" i = 1;\n" +
" if (true)\n" +
" break;\n" +
- " };\n" +
+ " }\n" +
" return 1;\n" +
"} \n" +
"int foo17() {\n" +
@@ -3492,48 +3496,73 @@
" }\n" +
"}",
},
- "----------\n" +
- "1. WARNING in p\\BytecodeA.java (at line 74)\n" +
- " L1 :; // good\n" +
- " ^^\n" +
- "The label L1 is never explicitly referenced\n" +
- "----------\n" +
- "2. ERROR in p\\BytecodeA.java (at line 83)\n" +
- " continue L; // bad\n" +
- " ^^^^^^^^^^^\n" +
- "continue cannot be used outside of a loop\n" +
- "----------\n" +
- "3. ERROR in p\\BytecodeA.java (at line 91)\n" +
- " continue L; // bad\n" +
- " ^^^^^^^^^^^\n" +
- "continue cannot be used outside of a loop\n" +
- "----------\n" +
- "4. WARNING in p\\BytecodeA.java (at line 93)\n" +
- " } finally {\n" +
- " return;\n" +
- " }\n" +
- " ^^^^^^^^^^^^^^^^^^^^^\n" +
- "finally block does not complete normally\n" +
- "----------\n" +
- "5. WARNING in p\\BytecodeA.java (at line 104)\n" +
- " L : K : for (;;) {\n" +
- " ^\n" +
- "The label K is never explicitly referenced\n" +
- "----------\n" +
- "6. ERROR in p\\BytecodeA.java (at line 105)\n" +
- " continue L; // good\n" +
- " ^^^^^^^^^^^\n" +
- "continue cannot be used outside of a loop\n" +
- "----------\n" +
- "7. ERROR in p\\BytecodeA.java (at line 115)\n" +
- " x [1] = (x = new Object[5]); // bad\n" +
- " ^\n" +
- "The local variable x may not have been initialized\n" +
- "----------\n" +
- "8. ERROR in p\\BytecodeA.java (at line 119)\n" +
- " } catch (java.io.IOException e) {\n" +
- " ^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable catch block for IOException. This exception is never thrown from the try statement body\n" +
+ "----------\n" +
+ "1. WARNING in p\\BytecodeA.java (at line 13)\n" +
+ " return 5;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in p\\BytecodeA.java (at line 26)\n" +
+ " return 1;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. WARNING in p\\BytecodeA.java (at line 33)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. WARNING in p\\BytecodeA.java (at line 45)\n" +
+ " for (int i = 1; i < 10; i++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. WARNING in p\\BytecodeA.java (at line 51)\n" +
+ " for (int i = 1; i < 10; i++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "6. WARNING in p\\BytecodeA.java (at line 74)\n" +
+ " L1 :; // good\n" +
+ " ^^\n" +
+ "The label L1 is never explicitly referenced\n" +
+ "----------\n" +
+ "7. ERROR in p\\BytecodeA.java (at line 83)\n" +
+ " continue L; // bad\n" +
+ " ^^^^^^^^^^^\n" +
+ "continue cannot be used outside of a loop\n" +
+ "----------\n" +
+ "8. ERROR in p\\BytecodeA.java (at line 91)\n" +
+ " continue L; // bad\n" +
+ " ^^^^^^^^^^^\n" +
+ "continue cannot be used outside of a loop\n" +
+ "----------\n" +
+ "9. WARNING in p\\BytecodeA.java (at line 93)\n" +
+ " } finally {\n" +
+ " return;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "finally block does not complete normally\n" +
+ "----------\n" +
+ "10. WARNING in p\\BytecodeA.java (at line 104)\n" +
+ " L : K : for (;;) {\n" +
+ " ^\n" +
+ "The label K is never explicitly referenced\n" +
+ "----------\n" +
+ "11. ERROR in p\\BytecodeA.java (at line 105)\n" +
+ " continue L; // good\n" +
+ " ^^^^^^^^^^^\n" +
+ "continue cannot be used outside of a loop\n" +
+ "----------\n" +
+ "12. ERROR in p\\BytecodeA.java (at line 115)\n" +
+ " x [1] = (x = new Object[5]); // bad\n" +
+ " ^\n" +
+ "The local variable x may not have been initialized\n" +
+ "----------\n" +
+ "13. ERROR in p\\BytecodeA.java (at line 119)\n" +
+ " } catch (java.io.IOException e) {\n" +
+ " ^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable catch block for IOException. This exception is never thrown from the try statement body\n" +
"----------\n");
}
public void test086() {
@@ -4161,59 +4190,148 @@
);
}
public void test104() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "p/G.java",
+ "package p;\n" +
+ "class G {\n" +
+ " final int x;\n" +
+ " static class BMember {\n" +
+ " int bar(){ return foo(); }\n" +
+ " }\n" +
+ " G(B b, int i){\n" +
+ " this.x = i; \n" +
+ " } \n" +
+ " int foo(){ return 1;}\n" +
+ "}",
+
+ "p/B.java",
+ "package p;\n" +
+ "class B{\n" +
+ " int f(){\n" +
+ " final int i;" +
+ " i = 1;\n" +
+ " if (false) i = 2;\n" +
+ " return i;\n" +
+ " }\n" +
+ " int g(){\n" +
+ " int i; \n" +
+ " if(true) i = 1;\n" +
+ " return i; \n" +
+ " }\n" +
+ " int h(){\n" +
+ " if(true) return 1;\n" +
+ " return 2;\n" +
+ " return 3;\n" +
+ " } \n" +
+ " int i(){\n" +
+ " if(false) ; else return 1;\n" +
+ " return 2;\n" +
+ " } \n" +
+ "}",
+ },
+ "----------\n" +
+ "1. ERROR in p\\G.java (at line 5)\n" +
+ " int bar(){ return foo(); }\n" +
+ " ^^^\n" +
+ "Cannot make a static reference to the non-static method foo() from the type G\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\B.java (at line 5)\n" +
+ " if (false) i = 2;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in p\\B.java (at line 15)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in p\\B.java (at line 16)\n" +
+ " return 3;\n" +
+ " ^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. WARNING in p\\B.java (at line 20)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n");
+ return;
+ }
this.runNegativeTest(
- new String[] {
- "p/G.java",
- "package p;\n" +
- "class G {\n" +
- " final int x;\n" +
- " static class BMember {\n" +
- " int bar(){ return foo(); }\n" +
- " }\n" +
- " G(B b, int i){\n" +
- " this.x = i; \n" +
- " } \n" +
- " int foo(){ return 1;}\n" +
- "}",
-
- "p/B.java",
- "package p;\n" +
- "class B{\n" +
- " int f(){\n" +
- " final int i;" +
- " i = 1;\n" +
- " if (false) i = 2;\n" +
- " return i;\n" +
- " }\n" +
- " int g(){\n" +
- " int i; \n" +
- " if(true) i = 1;\n" +
- " return i; \n" +
- " }\n" +
- " int h(){\n" +
- " if(true) return 1;\n" +
- " return 2;\n" +
- " return 3;\n" +
- " } \n" +
- " int i(){\n" +
- " if(false) ; else return 1;\n" +
- " return 2;\n" +
- " } \n" +
- "}",
- },
- "----------\n" +
- "1. ERROR in p\\G.java (at line 5)\n" +
- " int bar(){ return foo(); }\n" +
- " ^^^\n" +
- "Cannot make a static reference to the non-static method foo() from the type G\n" +
- "----------\n" +
- "----------\n" +
- "1. ERROR in p\\B.java (at line 16)\n" +
- " return 3;\n" +
- " ^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n"
- );
+ new String[] {
+ "p/G.java",
+ "package p;\n" +
+ "class G {\n" +
+ " final int x;\n" +
+ " static class BMember {\n" +
+ " int bar(){ return foo(); }\n" +
+ " }\n" +
+ " G(B b, int i){\n" +
+ " this.x = i; \n" +
+ " } \n" +
+ " int foo(){ return 1;}\n" +
+ "}",
+
+ "p/B.java",
+ "package p;\n" +
+ "class B{\n" +
+ " int f(){\n" +
+ " final int i;" +
+ " i = 1;\n" +
+ " if (false) i = 2;\n" +
+ " return i;\n" +
+ " }\n" +
+ " int g(){\n" +
+ " int i; \n" +
+ " if(true) i = 1;\n" +
+ " return i; \n" +
+ " }\n" +
+ " int h(){\n" +
+ " if(true) return 1;\n" +
+ " return 2;\n" +
+ " return 3;\n" +
+ " } \n" +
+ " int i(){\n" +
+ " if(false) ; else return 1;\n" +
+ " return 2;\n" +
+ " } \n" +
+ "}",
+ },
+ "----------\n" +
+ "1. ERROR in p\\G.java (at line 5)\n" +
+ " int bar(){ return foo(); }\n" +
+ " ^^^\n" +
+ "Cannot make a static reference to the non-static method foo() from the type G\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\B.java (at line 5)\n" +
+ " if (false) i = 2;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in p\\B.java (at line 15)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in p\\B.java (at line 16)\n" +
+ " return 3;\n" +
+ " ^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. WARNING in p\\B.java (at line 19)\n" +
+ " if(false) ; else return 1;\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. WARNING in p\\B.java (at line 20)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n");
}
public void test105() {
this.runNegativeTest(
@@ -5545,85 +5663,202 @@
}
public void test153() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ this.runNegativeTest(
+ new String[] {
+ "p/A3.java",
+ "package p;\n" +
+ "class A3 extends B {\n" +
+ " void fee() {\n" +
+ " C c = new C() {\n" +
+ " void foo() {\n" +
+ " B b = B.this;\n" +
+ " }\n" +
+ " };\n" +
+ " }\n" +
+ "}",
+
+ "p/B.java",
+ "package p;\n" +
+ "class B{\n" +
+ " int f(){\n" +
+ " final int i;" +
+ " i = 1;\n" +
+ " if (false) i = 2;\n" +
+ " return i;\n" +
+ " }\n" +
+ " int g(){\n" +
+ " int i; \n" +
+ " if(true) i = 1;\n" +
+ " return i; \n" +
+ " }\n" +
+ " int h(){\n" +
+ " if(true) return 1;\n" +
+ " return 2;\n" +
+ " return 3;\n" +
+ " } \n" +
+ " int i(){\n" +
+ " if(false) ; else return 1;\n" +
+ " return 2;\n" +
+ " } \n" +
+ "}",
+
+ "p/C.java",
+ "package p;\n" +
+ "public class C {\n" +
+ "void bar(int i){\n" +
+ " class Local {\n" +
+ " int x = i;\n" +
+ " }\n" +
+ "}\n" +
+ " void foo(){\n" +
+ " int k;\n" +
+ " int n = 5;\n" +
+ " if (n > 2) k = 3;\n" +
+ " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
+ " }\n" +
+ "}",
+ },
+ "----------\n" +
+ "1. ERROR in p\\A3.java (at line 6)\n" +
+ " B b = B.this;\n" +
+ " ^^^^^^\n" +
+ "No enclosing instance of the type B is accessible in scope\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\B.java (at line 5)\n" +
+ " if (false) i = 2;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in p\\B.java (at line 15)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in p\\B.java (at line 16)\n" +
+ " return 3;\n" +
+ " ^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. WARNING in p\\B.java (at line 20)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. ERROR in p\\C.java (at line 5)\n" +
+ " int x = i;\n" +
+ " ^\n" +
+ "Cannot refer to a non-final variable i inside an inner class defined in a different method\n" +
+ "----------\n" +
+ "2. ERROR in p\\C.java (at line 12)\n" +
+ " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
+ " ^\n" +
+ "The local variable k may not have been initialized\n" +
+ "----------\n"
+ );
+ return;
+ }
this.runNegativeTest(
- new String[] {
- "p/A3.java",
- "package p;\n" +
- "class A3 extends B {\n" +
- " void fee() {\n" +
- " C c = new C() {\n" +
- " void foo() {\n" +
- " B b = B.this;\n" +
- " }\n" +
- " };\n" +
- " }\n" +
- "}",
-
- "p/B.java",
- "package p;\n" +
- "class B{\n" +
- " int f(){\n" +
- " final int i;" +
- " i = 1;\n" +
- " if (false) i = 2;\n" +
- " return i;\n" +
- " }\n" +
- " int g(){\n" +
- " int i; \n" +
- " if(true) i = 1;\n" +
- " return i; \n" +
- " }\n" +
- " int h(){\n" +
- " if(true) return 1;\n" +
- " return 2;\n" +
- " return 3;\n" +
- " } \n" +
- " int i(){\n" +
- " if(false) ; else return 1;\n" +
- " return 2;\n" +
- " } \n" +
- "}",
+ new String[] {
+ "p/A3.java",
+ "package p;\n" +
+ "class A3 extends B {\n" +
+ " void fee() {\n" +
+ " C c = new C() {\n" +
+ " void foo() {\n" +
+ " B b = B.this;\n" +
+ " }\n" +
+ " };\n" +
+ " }\n" +
+ "}",
- "p/C.java",
- "package p;\n" +
- "public class C {\n" +
- "void bar(int i){\n" +
- " class Local {\n" +
- " int x = i;\n" +
- " }\n" +
- "}\n" +
- " void foo(){\n" +
- " int k;\n" +
- " int n = 5;\n" +
- " if (n > 2) k = 3;\n" +
- " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
- " }\n" +
- "}",
- },
- "----------\n" +
- "1. ERROR in p\\A3.java (at line 6)\n" +
- " B b = B.this;\n" +
- " ^^^^^^\n" +
- "No enclosing instance of the type B is accessible in scope\n" +
- "----------\n" +
- "----------\n" +
- "1. ERROR in p\\B.java (at line 16)\n" +
- " return 3;\n" +
- " ^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "----------\n" +
- "1. ERROR in p\\C.java (at line 5)\n" +
- " int x = i;\n" +
- " ^\n" +
- "Cannot refer to a non-final variable i inside an inner class defined in a different method\n" +
- "----------\n" +
- "2. ERROR in p\\C.java (at line 12)\n" +
- " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
- " ^\n" +
- "The local variable k may not have been initialized\n" +
- "----------\n"
- );
+ "p/B.java",
+ "package p;\n" +
+ "class B{\n" +
+ " int f(){\n" +
+ " final int i;" +
+ " i = 1;\n" +
+ " if (false) i = 2;\n" +
+ " return i;\n" +
+ " }\n" +
+ " int g(){\n" +
+ " int i; \n" +
+ " if(true) i = 1;\n" +
+ " return i; \n" +
+ " }\n" +
+ " int h(){\n" +
+ " if(true) return 1;\n" +
+ " return 2;\n" +
+ " return 3;\n" +
+ " } \n" +
+ " int i(){\n" +
+ " if(false) ; else return 1;\n" +
+ " return 2;\n" +
+ " } \n" +
+ "}",
+
+ "p/C.java",
+ "package p;\n" +
+ "public class C {\n" +
+ "void bar(int i){\n" +
+ " class Local {\n" +
+ " int x = i;\n" +
+ " }\n" +
+ "}\n" +
+ " void foo(){\n" +
+ " int k;\n" +
+ " int n = 5;\n" +
+ " if (n > 2) k = 3;\n" +
+ " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
+ " }\n" +
+ "}",
+ },
+ "----------\n" +
+ "1. ERROR in p\\A3.java (at line 6)\n" +
+ " B b = B.this;\n" +
+ " ^^^^^^\n" +
+ "No enclosing instance of the type B is accessible in scope\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\B.java (at line 5)\n" +
+ " if (false) i = 2;\n" +
+ " ^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in p\\B.java (at line 15)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in p\\B.java (at line 16)\n" +
+ " return 3;\n" +
+ " ^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. WARNING in p\\B.java (at line 19)\n" +
+ " if(false) ; else return 1;\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "5. WARNING in p\\B.java (at line 20)\n" +
+ " return 2;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. ERROR in p\\C.java (at line 5)\n" +
+ " int x = i;\n" +
+ " ^\n" +
+ "Cannot refer to a non-final variable i inside an inner class defined in a different method\n" +
+ "----------\n" +
+ "2. ERROR in p\\C.java (at line 12)\n" +
+ " System.out.println(k); // k is not \"definitely assigned\" before this\n" +
+ " ^\n" +
+ "The local variable k may not have been initialized\n" +
+ "----------\n");
+
}
public void test154() {
this.runNegativeTest(
@@ -7142,59 +7377,79 @@
" }\n" +
"} ",
},
- "----------\n" +
- "1. ERROR in p\\DCBug.java (at line 7)\n" +
- " class SubMember extends Member {\n" +
- " ^^^^^^^^^\n" +
- "Default constructor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor\n" +
- "----------\n" +
- "2. ERROR in p\\DCBug.java (at line 12)\n" +
- " catch(java.io.IOException e){};\n" +
- " ^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable catch block for IOException. This exception is never thrown from the try statement body\n" +
- "----------\n" +
- "3. WARNING in p\\DCBug.java (at line 15)\n" +
- " private static void check_break ()\n" +
- " ^^^^^^^^^^^^^^\n" +
- "The method check_break() from the type DCBug is never used locally\n" +
- "----------\n" +
- "4. WARNING in p\\DCBug.java (at line 20)\n" +
- " outer:\n" +
- " ^^^^^\n" +
- "The label outer is never explicitly referenced\n" +
- "----------\n" +
- "5. WARNING in p\\DCBug.java (at line 23)\n" +
- " middle:\n" +
- " ^^^^^^\n" +
- "The label middle is never explicitly referenced\n" +
- "----------\n" +
- "6. WARNING in p\\DCBug.java (at line 41)\n" +
- " outer:\n" +
- " ^^^^^\n" +
- "The label outer is never explicitly referenced\n" +
- "----------\n" +
- "7. WARNING in p\\DCBug.java (at line 47)\n" +
- " inner:\n" +
- " ^^^^^\n" +
- "The label inner is never explicitly referenced\n" +
- "----------\n" +
- "8. WARNING in p\\DCBug.java (at line 63)\n" +
- " middle:\n" +
- " ^^^^^^\n" +
- "The label middle is never explicitly referenced\n" +
- "----------\n" +
- "9. WARNING in p\\DCBug.java (at line 66)\n" +
- " inner:\n" +
- " ^^^^^\n" +
- "The label inner is never explicitly referenced\n" +
- "----------\n" +
- "10. WARNING in p\\DCBug.java (at line 90)\n" +
- " {\n" +
- " i = 20;\n" +
- " continue;\n" +
- " }\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
+ "----------\n" +
+ "1. ERROR in p\\DCBug.java (at line 7)\n" +
+ " class SubMember extends Member {\n" +
+ " ^^^^^^^^^\n" +
+ "Default constructor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor\n" +
+ "----------\n" +
+ "2. ERROR in p\\DCBug.java (at line 12)\n" +
+ " catch(java.io.IOException e){};\n" +
+ " ^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable catch block for IOException. This exception is never thrown from the try statement body\n" +
+ "----------\n" +
+ "3. WARNING in p\\DCBug.java (at line 15)\n" +
+ " private static void check_break ()\n" +
+ " ^^^^^^^^^^^^^^\n" +
+ "The method check_break() from the type DCBug is never used locally\n" +
+ "----------\n" +
+ "4. WARNING in p\\DCBug.java (at line 20)\n" +
+ " outer:\n" +
+ " ^^^^^\n" +
+ "The label outer is never explicitly referenced\n" +
+ "----------\n" +
+ "5. WARNING in p\\DCBug.java (at line 23)\n" +
+ " middle:\n" +
+ " ^^^^^^\n" +
+ "The label middle is never explicitly referenced\n" +
+ "----------\n" +
+ "6. WARNING in p\\DCBug.java (at line 41)\n" +
+ " outer:\n" +
+ " ^^^^^\n" +
+ "The label outer is never explicitly referenced\n" +
+ "----------\n" +
+ "7. WARNING in p\\DCBug.java (at line 42)\n" +
+ " for (int i = 0; i < 1000; i++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "8. WARNING in p\\DCBug.java (at line 45)\n" +
+ " for (int j = 0; j < 1000; j++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "9. WARNING in p\\DCBug.java (at line 47)\n" +
+ " inner:\n" +
+ " ^^^^^\n" +
+ "The label inner is never explicitly referenced\n" +
+ "----------\n" +
+ "10. WARNING in p\\DCBug.java (at line 48)\n" +
+ " for (int k = 0; k < 1000; k++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "11. WARNING in p\\DCBug.java (at line 63)\n" +
+ " middle:\n" +
+ " ^^^^^^\n" +
+ "The label middle is never explicitly referenced\n" +
+ "----------\n" +
+ "12. WARNING in p\\DCBug.java (at line 66)\n" +
+ " inner:\n" +
+ " ^^^^^\n" +
+ "The label inner is never explicitly referenced\n" +
+ "----------\n" +
+ "13. WARNING in p\\DCBug.java (at line 67)\n" +
+ " for (int k = 0; k < 1000; k++)\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "14. WARNING in p\\DCBug.java (at line 90)\n" +
+ " {\n" +
+ " i = 20;\n" +
+ " continue;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
"----------\n");
}
public void test199() {
@@ -9259,83 +9514,93 @@
"}",
},
- "----------\n" +
- "1. WARNING in p\\d\\One1.java (at line 7)\n" +
- " public void problem2() {\n" +
- " ^^^^^^^^^^\n" +
- "The method problem2() from the type new Object(){} is never used locally\n" +
- "----------\n" +
- "----------\n" +
- "1. WARNING in p\\d\\JE_5_AWT.java (at line 4)\n" +
- " public class JE_5_AWT extends Frame {\n" +
- " ^^^^^^^^\n" +
- "The serializable class JE_5_AWT does not declare a static final serialVersionUID field of type long\n" +
- "----------\n" +
- "2. WARNING in p\\d\\JE_5_AWT.java (at line 21)\n" +
- " Object obj = JE_5_AWT.this; //<---------OK\n" +
- " ^^^\n" +
- "The field new Object(){}.obj is never read locally\n" +
- "----------\n" +
- "3. WARNING in p\\d\\JE_5_AWT.java (at line 26)\n" +
- " Object obj = JE_5_AWT.this; //<---------KO \n" +
- " ^^^\n" +
- "The field new Object(){}.obj is never read locally\n" +
- "----------\n" +
- "4. ERROR in p\\d\\JE_5_AWT.java (at line 26)\n" +
- " Object obj = JE_5_AWT.this; //<---------KO \n" +
- " ^^^^^^^^^^^^^\n" +
- "No enclosing instance of the type JE_5_AWT is accessible in scope\n" +
- "----------\n" +
- "5. ERROR in p\\d\\JE_5_AWT.java (at line 32)\n" +
- " Object obj2 = d; // KO\n" +
- " ^\n" +
- "Cannot refer to an instance field d while explicitly invoking a constructor\n" +
- "----------\n" +
- "6. WARNING in p\\d\\JE_5_AWT.java (at line 37)\n" +
- " Object myself() {\n" +
- " ^^^^^^^^\n" +
- "The method myself() from the type new Object(){} is never used locally\n" +
- "----------\n" +
- "7. WARNING in p\\d\\JE_5_AWT.java (at line 43)\n" +
- " class Local {\n" +
- " ^^^^^\n" +
- "The type Local is never used locally\n" +
- "----------\n" +
- "8. WARNING in p\\d\\JE_5_AWT.java (at line 44)\n" +
- " JE_5_AWT obj = JE_5_AWT.this;\n" +
- " ^^^\n" +
- "The field Local.obj is never read locally\n" +
- "----------\n" +
- "9. WARNING in p\\d\\JE_5_AWT.java (at line 49)\n" +
- " Object outer() {\n" +
- " ^^^^^^^\n" +
- "The method outer() from the type new Object(){} is never used locally\n" +
- "----------\n" +
- "10. ERROR in p\\d\\JE_5_AWT.java (at line 50)\n" +
- " return JE_5_AWT.this; //<---- KO\n" +
- " ^^^^^^^^^^^^^\n" +
- "No enclosing instance of the type JE_5_AWT is accessible in scope\n" +
- "----------\n" +
- "11. WARNING in p\\d\\JE_5_AWT.java (at line 55)\n" +
- " class Local extends Thread {\n" +
- " ^^^^^\n" +
- "The type Local is never used locally\n" +
- "----------\n" +
- "12. WARNING in p\\d\\JE_5_AWT.java (at line 56)\n" +
- " Local() {\n" +
- " ^^^^^^^\n" +
- "The constructor Local() is never used locally\n" +
- "----------\n" +
- "----------\n" +
- "1. WARNING in p\\d\\One.java (at line 13)\n" +
- " public void problem2() {\n" +
- " ^^^^^^^^^^\n" +
- "The method problem2() from the type new Object(){} is never used locally\n" +
- "----------\n" +
- "2. ERROR in p\\d\\One.java (at line 24)\n" +
- " fireTableCellUpdated();\n" +
- " ^^^^^^^^^^^^^^^^^^^^\n" +
- "Cannot refer to an instance method while explicitly invoking a constructor\n" +
+ "----------\n" +
+ "1. WARNING in p\\d\\One1.java (at line 7)\n" +
+ " public void problem2() {\n" +
+ " ^^^^^^^^^^\n" +
+ "The method problem2() from the type new Object(){} is never used locally\n" +
+ "----------\n" +
+ "2. WARNING in p\\d\\One1.java (at line 8)\n" +
+ " if(dialog == 3) return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\d\\JE_5_AWT.java (at line 4)\n" +
+ " public class JE_5_AWT extends Frame {\n" +
+ " ^^^^^^^^\n" +
+ "The serializable class JE_5_AWT does not declare a static final serialVersionUID field of type long\n" +
+ "----------\n" +
+ "2. WARNING in p\\d\\JE_5_AWT.java (at line 21)\n" +
+ " Object obj = JE_5_AWT.this; //<---------OK\n" +
+ " ^^^\n" +
+ "The field new Object(){}.obj is never read locally\n" +
+ "----------\n" +
+ "3. WARNING in p\\d\\JE_5_AWT.java (at line 26)\n" +
+ " Object obj = JE_5_AWT.this; //<---------KO \n" +
+ " ^^^\n" +
+ "The field new Object(){}.obj is never read locally\n" +
+ "----------\n" +
+ "4. ERROR in p\\d\\JE_5_AWT.java (at line 26)\n" +
+ " Object obj = JE_5_AWT.this; //<---------KO \n" +
+ " ^^^^^^^^^^^^^\n" +
+ "No enclosing instance of the type JE_5_AWT is accessible in scope\n" +
+ "----------\n" +
+ "5. ERROR in p\\d\\JE_5_AWT.java (at line 32)\n" +
+ " Object obj2 = d; // KO\n" +
+ " ^\n" +
+ "Cannot refer to an instance field d while explicitly invoking a constructor\n" +
+ "----------\n" +
+ "6. WARNING in p\\d\\JE_5_AWT.java (at line 37)\n" +
+ " Object myself() {\n" +
+ " ^^^^^^^^\n" +
+ "The method myself() from the type new Object(){} is never used locally\n" +
+ "----------\n" +
+ "7. WARNING in p\\d\\JE_5_AWT.java (at line 43)\n" +
+ " class Local {\n" +
+ " ^^^^^\n" +
+ "The type Local is never used locally\n" +
+ "----------\n" +
+ "8. WARNING in p\\d\\JE_5_AWT.java (at line 44)\n" +
+ " JE_5_AWT obj = JE_5_AWT.this;\n" +
+ " ^^^\n" +
+ "The field Local.obj is never read locally\n" +
+ "----------\n" +
+ "9. WARNING in p\\d\\JE_5_AWT.java (at line 49)\n" +
+ " Object outer() {\n" +
+ " ^^^^^^^\n" +
+ "The method outer() from the type new Object(){} is never used locally\n" +
+ "----------\n" +
+ "10. ERROR in p\\d\\JE_5_AWT.java (at line 50)\n" +
+ " return JE_5_AWT.this; //<---- KO\n" +
+ " ^^^^^^^^^^^^^\n" +
+ "No enclosing instance of the type JE_5_AWT is accessible in scope\n" +
+ "----------\n" +
+ "11. WARNING in p\\d\\JE_5_AWT.java (at line 55)\n" +
+ " class Local extends Thread {\n" +
+ " ^^^^^\n" +
+ "The type Local is never used locally\n" +
+ "----------\n" +
+ "12. WARNING in p\\d\\JE_5_AWT.java (at line 56)\n" +
+ " Local() {\n" +
+ " ^^^^^^^\n" +
+ "The constructor Local() is never used locally\n" +
+ "----------\n" +
+ "----------\n" +
+ "1. WARNING in p\\d\\One.java (at line 13)\n" +
+ " public void problem2() {\n" +
+ " ^^^^^^^^^^\n" +
+ "The method problem2() from the type new Object(){} is never used locally\n" +
+ "----------\n" +
+ "2. WARNING in p\\d\\One.java (at line 14)\n" +
+ " if(dialog == 3) return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in p\\d\\One.java (at line 24)\n" +
+ " fireTableCellUpdated();\n" +
+ " ^^^^^^^^^^^^^^^^^^^^\n" +
+ "Cannot refer to an instance method while explicitly invoking a constructor\n" +
"----------\n");
}
public void test236() {
@@ -9888,16 +10153,21 @@
" } \n" +
"} \n",
},
- "----------\n" +
- "1. ERROR in p1\\X.java (at line 5)\n" +
- " new Object(){ \n" +
- " { \n" +
- " if (true) throw new IOException(); \n" +
- " if (true) throw new Exception(); \n" +
- " } \n" +
- " }; \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unhandled exception type Exception\n" +
+ "----------\n" +
+ "1. ERROR in p1\\X.java (at line 5)\n" +
+ " new Object(){ \n" +
+ " { \n" +
+ " if (true) throw new IOException(); \n" +
+ " if (true) throw new Exception(); \n" +
+ " } \n" +
+ " }; \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unhandled exception type Exception\n" +
+ "----------\n" +
+ "2. WARNING in p1\\X.java (at line 8)\n" +
+ " if (true) throw new Exception(); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n"
);
}
@@ -11307,16 +11577,38 @@
"} \n",
},
null, customOptions,
- "----------\n" +
- "1. WARNING in Test.java (at line 3)\n" +
- " private void doTest() { \n" +
- " ^^^^^^^^\n" +
- "The method doTest() from the type Test is never used locally\n" +
- "----------\n" +
- "2. WARNING in Test.java (at line 12)\n" +
- " int i = 0; \n" +
- " ^\n" +
- "The local variable i is never read\n" +
+ "----------\n" +
+ "1. WARNING in Test.java (at line 3)\n" +
+ " private void doTest() { \n" +
+ " ^^^^^^^^\n" +
+ "The method doTest() from the type Test is never used locally\n" +
+ "----------\n" +
+ "2. WARNING in Test.java (at line 5)\n" +
+ " if (DEBUG){ \n" +
+ " time = System.currentTimeMillis(); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. WARNING in Test.java (at line 9)\n" +
+ " if (DEBUG) { \n" +
+ " System.out.println(\"Bob takes: \" + (System.currentTimeMillis() - time) + \" ms\"); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. WARNING in Test.java (at line 12)\n" +
+ " int i = 0; \n" +
+ " ^\n" +
+ "The local variable i is never read\n" +
+ "----------\n" +
+ "5. WARNING in Test.java (at line 13)\n" +
+ " if (DEBUG){ \n" +
+ " int j = 1; \n" +
+ " j++; \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n",
null, null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings);
}
@@ -11438,41 +11730,93 @@
" } \n"+
"}",
},
- "----------\n" +
- "1. WARNING in X.java (at line 28)\n" +
- " Object obj = \"dummy\"; \n" +
- " ^^^\n" +
- "The local variable obj is never read\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 44)\n" +
- " while (false) { \n" +
- " doit(obj); //this is DEFINITELY unreachable code, and is recognized as such, with error \n" +
- " } \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "3. ERROR in X.java (at line 48)\n" +
- " while (FALSE) { \n" +
- " doit(obj); //this is conditionnally unreachable code, but is recognized as definitely unreacheable code, with error \n" +
- " } \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "4. ERROR in X.java (at line 52)\n" +
- " for (; false;) { \n" +
- " doit(obj); //this is DEFINITELY unreachable code, but is recognized as definitely unreacheable code, with error \n" +
- " } \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "5. ERROR in X.java (at line 56)\n" +
- " for (; FALSE;) { \n" +
- " doit(obj); //this is conditionnally unreachable code, but is recognized as definitely unreacheable code, with error \n" +
- " } \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n"
-,
+ "----------\n" +
+ "1. WARNING in X.java (at line 9)\n" +
+ " if (TRUE || obj != null) { \n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 18)\n" +
+ " if (FALSE) { \n" +
+ " doit(obj); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 22)\n" +
+ " if (false) { \n" +
+ " doit(obj); \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "4. WARNING in X.java (at line 28)\n" +
+ " Object obj = \"dummy\"; \n" +
+ " ^^^\n" +
+ "The local variable obj is never read\n" +
+ "----------\n" +
+ "5. WARNING in X.java (at line 36)\n" +
+ " if (false) { \n" +
+ " doit(obj); //this is DEFINITELY unreachable code, but is not recognized as such \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "6. WARNING in X.java (at line 40)\n" +
+ " if (FALSE) { \n" +
+ " doit(obj); //this is conditionnally unreachable code, but is not recognized as such \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "7. ERROR in X.java (at line 44)\n" +
+ " while (false) { \n" +
+ " doit(obj); //this is DEFINITELY unreachable code, and is recognized as such, with error \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "8. ERROR in X.java (at line 48)\n" +
+ " while (FALSE) { \n" +
+ " doit(obj); //this is conditionnally unreachable code, but is recognized as definitely unreacheable code, with error \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "9. ERROR in X.java (at line 52)\n" +
+ " for (; false;) { \n" +
+ " doit(obj); //this is DEFINITELY unreachable code, but is recognized as definitely unreacheable code, with error \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "10. ERROR in X.java (at line 56)\n" +
+ " for (; FALSE;) { \n" +
+ " doit(obj); //this is conditionnally unreachable code, but is recognized as definitely unreacheable code, with error \n" +
+ " } \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "11. WARNING in X.java (at line 60)\n" +
+ " int i = (false ? doit(\"0\") : doit(\"1\")); \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "12. WARNING in X.java (at line 63)\n" +
+ " int j = (FALSE ? doit(\"0\") : doit(\"1\")); \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "13. WARNING in X.java (at line 77)\n" +
+ " doit(obj); //this is conditionnally unreachable code \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "14. WARNING in X.java (at line 91)\n" +
+ " doit(obj); //this is DEFINITELY unreachable code \n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n",
null,
true,
customOptions);
@@ -16048,11 +16392,17 @@
" }\n" +
"}\n"
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " break label2;\n" +
- " ^^^^^^^^^^^^^\n" +
- "The label label2 is missing\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " if (false) \n" +
+ " break label2;\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " break label2;\n" +
+ " ^^^^^^^^^^^^^\n" +
+ "The label label2 is missing\n" +
"----------\n");
}
#P org.eclipse.jdt.core.tests.compiler
Index: src/org/eclipse/jdt/core/tests/compiler/regression/FlowAnalysisTest.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FlowAnalysisTest.java,v
retrieving revision 1.34
diff -u -r1.34 FlowAnalysisTest.java
--- src/org/eclipse/jdt/core/tests/compiler/regression/FlowAnalysisTest.java 9 Sep 2008 16:39:25 -0000 1.34
+++ src/org/eclipse/jdt/core/tests/compiler/regression/FlowAnalysisTest.java 24 Nov 2008 12:59:15 -0000
@@ -48,11 +48,18 @@
" } \n" +
"}\n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 2)\n" +
- " public String foo(int i) {\n" +
- " ^^^^^^^^^^\n" +
- "This method must return a result of type String\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 2)\n" +
+ " public String foo(int i) {\n" +
+ " ^^^^^^^^^^\n" +
+ "This method must return a result of type String\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 6)\n" +
+ " if (i > 0) {\n" +
+ " return null;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
"----------\n");
}
@@ -712,11 +719,16 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 10)\n" +
- " x.foo();\n" +
- " ^\n" +
- "The local variable x may not have been initialized\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 8)\n" +
+ " x = new X();\n" +
+ " ^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 10)\n" +
+ " x.foo();\n" +
+ " ^\n" +
+ "The local variable x may not have been initialized\n" +
"----------\n",
JavacTestOptions.JavacHasABug.JavacBugFixed_6_10);
}
@@ -1169,11 +1181,19 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " System.out.println(s);\n" +
- " ^\n" +
- "The local variable s may not have been initialized\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " String s;\n" +
+ " System.out.println(s);\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 5)\n" +
+ " System.out.println(s);\n" +
+ " ^\n" +
+ "The local variable s may not have been initialized\n" +
"----------\n");
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=166641
@@ -1210,11 +1230,21 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 6)\n" +
- " System.out.println(s);\n" +
- " ^\n" +
- "The local variable s may not have been initialized\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " String s;\n" +
+ " if (System.out != null) {\n" +
+ " System.out.println(s);\n" +
+ " }\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " System.out.println(s);\n" +
+ " ^\n" +
+ "The local variable s may not have been initialized\n" +
"----------\n");
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=166641
@@ -1232,11 +1262,18 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " s = \"\";\n" +
- " ^\n" +
- "The final local variable s cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " s = \"\";\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 5)\n" +
+ " s = \"\";\n" +
+ " ^\n" +
+ "The final local variable s cannot be assigned. It must be blank and not using a compound assignment\n" +
"----------\n");
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=166641
@@ -1273,11 +1310,18 @@
" }\n" +
"}"
},
- "----------\n" +
- "1. ERROR in X.java (at line 7)\n" +
- " s = \"\";\n" +
- " ^\n" +
- "The final local variable s may already have been assigned\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " s = \"\";\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 7)\n" +
+ " s = \"\";\n" +
+ " ^\n" +
+ "The final local variable s may already have been assigned\n" +
"----------\n");
}
// switch and definite assignment
@@ -1375,7 +1419,12 @@
" }\n" +
"}\n",
},
- "",
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " for (final int i; 0 < (i = 1); i = i + 1) {\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n",
"1",
"",
JavacTestOptions.JavacHasABug.JavacBug4660984);
@@ -1421,11 +1470,20 @@
"}\n"
},
false /* expectingCompilerErrors */,
- "----------\n" +
- "1. WARNING in X.java (at line 5)\n" +
- " label: while (bar()) {\n" +
- " ^^^^^\n" +
- "The label label is never explicitly referenced\n" +
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (b) {\n" +
+ " label: while (bar()) {\n" +
+ " }\n" +
+ " return null;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 5)\n" +
+ " label: while (bar()) {\n" +
+ " ^^^^^\n" +
+ "The label label is never explicitly referenced\n" +
"----------\n" /* expectedCompilerLog */,
"" /* expectedOutputString */,
"" /* expectedErrorString */,
@@ -1460,7 +1518,16 @@
"}\n"
},
false /* expectingCompilerErrors */,
- "" /* expectedCompilerLog */,
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (b) {\n" +
+ " while (bar()) {\n" +
+ " }\n" +
+ " return null;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" /* expectedCompilerLog */,
"" /* expectedOutputString */,
"" /* expectedErrorString */,
false /* forceExecution */,
@@ -1506,6 +1573,300 @@
}
);
}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399
+public void test052() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo(boolean b) {\n" +
+ " if (b && false) {\n" +
+ " int i = 0; // deadcode\n" +
+ " return; // 1\n" +
+ " }\n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (b && false) {\n" +
+ " int i = 0; // deadcode\n" +
+ " return; // 1\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399 - variation
+public void test053() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo(boolean b) {\n" +
+ " if (false && b) {\n" +
+ " int j = 0; // deadcode\n" +
+ " return; // 2\n" +
+ " }\n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false && b) {\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 3)\n" +
+ " if (false && b) {\n" +
+ " int j = 0; // deadcode\n" +
+ " return; // 2\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 8)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399 - variation
+public void test054() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo(boolean b) {\n" +
+ " while (true) {\n" +
+ " if (true) break;\n" +
+ " int k = 0; // deadcode\n" +
+ " }\n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " int k = 0; // deadcode\n" +
+ " ^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 8)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399 - variation
+public void test055() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo(boolean b) {\n" +
+ " if (true || b) {\n" +
+ " int l = 0; // deadcode\n" +
+ " return; // 2a\n" +
+ " } \n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (true || b) {\n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 7)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 8)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399 - variation
+public void test056() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_4) {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void bar() {\n" +
+ " return;\n" +
+ " {\n" +
+ " return; // 3\n" +
+ " }\n" +
+ " }\n" +
+ " void baz() {\n" +
+ " return;\n" +
+ " {\n" +
+ " }\n" +
+ " } \n" +
+ " void baz2() {\n" +
+ " return;\n" +
+ " ; // 4\n" +
+ " } \n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. ERROR in X.java (at line 4)\n" +
+ " {\n" +
+ " return; // 3\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 10)\n" +
+ " {\n" +
+ " }\n" +
+ " ^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+ return;
+ }
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void bar() {\n" +
+ " return;\n" +
+ " {\n" +
+ " return; // 3\n" +
+ " }\n" +
+ " }\n" +
+ " void baz() {\n" +
+ " return;\n" +
+ " {\n" +
+ " }\n" +
+ " } \n" +
+ " void baz2() {\n" +
+ " return;\n" +
+ " ; // 4\n" +
+ " } \n" +
+ "} \n"
+ },
+ "----------\n" +
+ "1. ERROR in X.java (at line 4)\n" +
+ " {\n" +
+ " return; // 3\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 10)\n" +
+ " {\n" +
+ " }\n" +
+ " ^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 15)\n" +
+ " ; // 4\n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=110544
+public void test057() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo(int x, int[] array) {\n" +
+ " for (int i = 0; \n" +
+ " i < array.length; \n" +
+ " i++) {//dead code\n" +
+ " if (x == array[i])\n" +
+ " return;\n" +
+ " else\n" +
+ " break;\n" +
+ " }\n" +
+ " }\n" +
+ "}\n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " i++) {//dead code\n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 9)\n" +
+ " break;\n" +
+ " ^^^^^^\n" +
+ "Statement unnecessarily nested within else clause. The corresponding then clause does not complete normally\n" +
+ "----------\n");
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=48399 - variation
+public void test058() {
+ runNegativeTest(
+ new String[] { /* test files */
+ "X.java",
+ "public class X {\n" +
+ " void foo() {\n" +
+ " if (false) {\n" +
+ " class Local {\n" +
+ " int i = 12;\n" +
+ " { i++; }\n" +
+ " void method() {\n" +
+ " if (false)\n" +
+ " System.out.println();\n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "}\n"
+ },
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " class Local {\n" +
+ " int i = 12;\n" +
+ " { i++; }\n" +
+ " void method() {\n" +
+ " if (false)\n" +
+ " System.out.println();\n" +
+ " return;\n" +
+ " return;\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 4)\n" +
+ " class Local {\n" +
+ " ^^^^^\n" +
+ "The type Local is never used locally\n" +
+ "----------\n" +
+ "3. WARNING in X.java (at line 7)\n" +
+ " void method() {\n" +
+ " ^^^^^^^^\n" +
+ "The method method() from the type Local is never used locally\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 11)\n" +
+ " return;\n" +
+ " ^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n");
+}
public static Class testClass() {
return FlowAnalysisTest.class;
}
Index: src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java,v
retrieving revision 1.78
diff -u -r1.78 NullReferenceTest.java
--- src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java 27 Jun 2008 16:04:45 -0000 1.78
+++ src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java 24 Nov 2008 12:59:24 -0000
@@ -638,12 +638,17 @@
" o.toString();\n" +
" }\n" +
"}\n"},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " o.toString();\n" +
- " ^\n" +
- "Null pointer access: The variable o can only be null at this location\n" +
- "----------\n",
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " Object o = true ? null : null;\n" +
+ " ^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " o.toString();\n" +
+ " ^\n" +
+ "Null pointer access: The variable o can only be null at this location\n" +
+ "----------\n",
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError);
}
@@ -658,12 +663,17 @@
" o.toString();\n" +
" }\n" +
"}\n"},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " o.toString();\n" +
- " ^\n" +
- "Null pointer access: The variable o can only be null at this location\n" +
- "----------\n",
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " Object o = true ? null : new Object();\n" +
+ " ^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " o.toString();\n" +
+ " ^\n" +
+ "Null pointer access: The variable o can only be null at this location\n" +
+ "----------\n",
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError);
}
@@ -692,12 +702,17 @@
" o.toString();\n" +
" }\n" +
"}\n"},
- "----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " o.toString();\n" +
- " ^\n" +
- "Null pointer access: The variable o can only be null at this location\n" +
- "----------\n",
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " Object o = (1 == 1) ? null : new Object();\n" +
+ " ^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " o.toString();\n" +
+ " ^\n" +
+ "Null pointer access: The variable o can only be null at this location\n" +
+ "----------\n",
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError);
}
@@ -1604,12 +1619,26 @@
" o.toString();\n" +
" }\n" +
"}\n"},
- "----------\n" +
- "1. ERROR in X.java (at line 13)\n" +
- " o.toString();\n" +
- " ^\n" +
- "Null pointer access: The variable o can only be null at this location\n" +
- "----------\n",
+ "----------\n" +
+ "1. WARNING in X.java (at line 4)\n" +
+ " if (false) {\n" +
+ " o = new Object();\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. WARNING in X.java (at line 10)\n" +
+ " else {\n" +
+ " o = new Object();\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 13)\n" +
+ " o.toString();\n" +
+ " ^\n" +
+ "Null pointer access: The variable o can only be null at this location\n" +
+ "----------\n",
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError);
}
@@ -7869,7 +7898,12 @@
" if (o == null) { };\n" + // quiet
" }\n" +
"}\n"},
- "");
+ "----------\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " assert(false && o != null);\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n");
}
}
Index: src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java,v
retrieving revision 1.53
diff -u -r1.53 AssignmentTest.java
--- src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java 10 Sep 2008 16:31:51 -0000 1.53
+++ src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java 24 Nov 2008 12:59:12 -0000
@@ -977,10 +977,17 @@
options /* custom options */,
// compiler results
"----------\n" + /* expected compiler log */
- "1. ERROR in X.java (at line 4)\n" +
- " b = false;\n" +
- " ^\n" +
- "The parameter b should not be assigned\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " b = false;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " b = false;\n" +
+ " ^\n" +
+ "The parameter b should not be assigned\n" +
"----------\n",
// javac options
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError /* javac test options */);
@@ -1010,10 +1017,15 @@
options /* custom options */,
// compiler results
"----------\n" + /* expected compiler log */
- "1. ERROR in X.java (at line 6)\n" +
- " b = false;\n" +
- " ^\n" +
- "The parameter b should not be assigned\n" +
+ "1. WARNING in X.java (at line 6)\n" +
+ " b = false;\n" +
+ " ^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " b = false;\n" +
+ " ^\n" +
+ "The parameter b should not be assigned\n" +
"----------\n",
// javac options
JavacTestOptions.Excuse.EclipseWarningConfiguredAsError /* javac test options */);
@@ -1036,10 +1048,17 @@
"}\n",
},
"----------\n" +
- "1. ERROR in X.java (at line 4)\n" +
- " b = false;\n" +
- " ^\n" +
- "The final local variable b cannot be assigned. It must be blank and not using a compound assignment\n" +
+ "1. WARNING in X.java (at line 3)\n" +
+ " if (false) {\n" +
+ " b = false;\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 4)\n" +
+ " b = false;\n" +
+ " ^\n" +
+ "The final local variable b cannot be assigned. It must be blank and not using a compound assignment\n" +
"----------\n",
null, true, options);
}
@@ -1356,10 +1375,19 @@
},
// compiler results
"----------\n" + /* expected compiler log */
- "1. ERROR in X.java (at line 11)\n" +
- " i = 1;\n" +
- " ^\n" +
- "The final local variable i may already have been assigned\n" +
+ "1. WARNING in X.java (at line 5)\n" +
+ " if (false) {\n" +
+ " i = 0;\n" +
+ " System.out.println(i);\n" +
+ " throw new MyException();\n" +
+ " }\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 11)\n" +
+ " i = 1;\n" +
+ " ^\n" +
+ "The final local variable i may already have been assigned\n" +
"----------\n",
// javac options
JavacTestOptions.EclipseJustification.EclipseBug235543 /* javac test options */);
Index: src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java,v
retrieving revision 1.78
diff -u -r1.78 Compliance_1_5.java
--- src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java 27 Jun 2008 16:04:44 -0000 1.78
+++ src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java 24 Nov 2008 12:59:15 -0000
@@ -108,28 +108,37 @@
" } \n" +
"} \n"
},
- "----------\n" +
- "1. ERROR in p1\\X.java (at line 4)\n" +
- " while (false); \n" +
- " ^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "2. ERROR in p1\\X.java (at line 5)\n" +
- " while (false) System.out.println(\"unreachable\"); \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "3. ERROR in p1\\X.java (at line 8)\n" +
- " for (;false;); \n" +
- " ^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "4. ERROR in p1\\X.java (at line 9)\n" +
- " for (;false;) System.out.println(\"unreachable\"); \n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Unreachable code\n" +
- "----------\n"
- );
+ "----------\n" +
+ "1. ERROR in p1\\X.java (at line 4)\n" +
+ " while (false); \n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "2. ERROR in p1\\X.java (at line 5)\n" +
+ " while (false) System.out.println(\"unreachable\"); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "3. ERROR in p1\\X.java (at line 8)\n" +
+ " for (;false;); \n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. ERROR in p1\\X.java (at line 9)\n" +
+ " for (;false;) System.out.println(\"unreachable\"); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "5. WARNING in p1\\X.java (at line 10)\n" +
+ " if (false); \n" +
+ " ^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "6. WARNING in p1\\X.java (at line 11)\n" +
+ " if (false)System.out.println(\"unreachable\"); \n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ "Dead code\n" +
+ "----------\n");
}
/// binary compatibility
public void test012() {
@@ -783,12 +792,18 @@
" } \n"+
"} \n"
},
- "----------\n" +
- "1. ERROR in p1\\X.java (at line 4)\n" +
- " for (;false;p()); \n" +
- " ^\n" +
- "Unreachable code\n" +
- "----------\n");
+ "----------\n" +
+ "1. WARNING in p1\\X.java (at line 4)\n" +
+ " for (;false;p()); \n" +
+ " ^^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "2. ERROR in p1\\X.java (at line 4)\n" +
+ " for (;false;p()); \n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n"
+);
}
/*
* http://bugs.eclipse.org/bugs/show_bug.cgi?id=12445
@@ -1255,26 +1270,36 @@
" } \n"+
"} \n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 5)\n" +
- " for (;false;); \n" +
- " ^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "2. ERROR in X.java (at line 6)\n" +
- " for (;false;){} \n" +
- " ^^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "3. ERROR in X.java (at line 7)\n" +
- " while (false); \n" +
- " ^\n" +
- "Unreachable code\n" +
- "----------\n" +
- "4. ERROR in X.java (at line 8)\n" +
- " while (false){} \n" +
- " ^^\n" +
- "Unreachable code\n" +
+ "----------\n" +
+ "1. ERROR in X.java (at line 5)\n" +
+ " for (;false;); \n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "2. ERROR in X.java (at line 6)\n" +
+ " for (;false;){} \n" +
+ " ^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "3. ERROR in X.java (at line 7)\n" +
+ " while (false); \n" +
+ " ^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "4. ERROR in X.java (at line 8)\n" +
+ " while (false){} \n" +
+ " ^^\n" +
+ "Unreachable code\n" +
+ "----------\n" +
+ "5. WARNING in X.java (at line 9)\n" +
+ " if (false) {} else {} \n" +
+ " ^^\n" +
+ "Dead code\n" +
+ "----------\n" +
+ "6. WARNING in X.java (at line 10)\n" +
+ " if (false) ; else ; \n" +
+ " ^\n" +
+ "Dead code\n" +
"----------\n");
}
// jls6.5.5.1 - simple type names favor member type over toplevel one.
Index: src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java,v
retrieving revision 1.768
diff -u -r1.768 GenericTypeTest.java
--- src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 20 Nov 2008 16:32:23 -0000 1.768
+++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 24 Nov 2008 12:59:22 -0000
@@ -25316,11 +25316,21 @@
" }\n" +
"}\n",
},
- "----------\n" +
- "1. ERROR in X.java (at line 13)\n" +
- " return true ? superList : superList;\n" +
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
- "Type mismatch: cannot convert from ArrayList