View | Details | Raw Unified | Return to bug 325342 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jdt/internal/compiler/tool/Options.java (+1 lines)
Lines 195-200 Link Here
195
						|| token.equals("staticReceiver")//$NON-NLS-1$
195
						|| token.equals("staticReceiver")//$NON-NLS-1$
196
						|| token.equals("super")//$NON-NLS-1$
196
						|| token.equals("super")//$NON-NLS-1$
197
						|| token.equals("suppress")//$NON-NLS-1$
197
						|| token.equals("suppress")//$NON-NLS-1$
198
						|| token.equals("suppressAssertNull")//$NON-NLS-1$
198
						|| token.equals("syncOverride")//$NON-NLS-1$
199
						|| token.equals("syncOverride")//$NON-NLS-1$
199
						|| token.equals("synthetic-access")//$NON-NLS-1$
200
						|| token.equals("synthetic-access")//$NON-NLS-1$
200
						|| token.equals("syntheticAccess")//$NON-NLS-1$
201
						|| token.equals("syntheticAccess")//$NON-NLS-1$
(-)batch/org/eclipse/jdt/internal/compiler/batch/Main.java (-1 / +6 lines)
Lines 3456-3462 Link Here
3456
			} else if (token.equals("super")) { //$NON-NLS-1$
3456
			} else if (token.equals("super")) { //$NON-NLS-1$
3457
				setSeverity(CompilerOptions.OPTION_ReportOverridingMethodWithoutSuperInvocation, severity, isEnabling);
3457
				setSeverity(CompilerOptions.OPTION_ReportOverridingMethodWithoutSuperInvocation, severity, isEnabling);
3458
				return;
3458
				return;
3459
			}
3459
			} else if (token.equals("suppressAssertNull")) { //$NON-NLS-1$
3460
				this.options.put(
3461
						CompilerOptions.OPTION_SuppressNullInfoFromAsserts,
3462
						isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
3463
				return;
3464
			} 
3460
			break;
3465
			break;
3461
		case 't' :
3466
		case 't' :
3462
			if (token.startsWith("tasks")) { //$NON-NLS-1$
3467
			if (token.startsWith("tasks")) { //$NON-NLS-1$
(-)batch/org/eclipse/jdt/internal/compiler/batch/messages.properties (+2 lines)
Lines 313-318 Link Here
313
\      suppress           + enable @SuppressWarnings\n\
313
\      suppress           + enable @SuppressWarnings\n\
314
\                           When used with -err:, it can also silent optional\n\
314
\                           When used with -err:, it can also silent optional\n\
315
\                           errors and warnings\n\
315
\                           errors and warnings\n\
316
\	   suppressAssertNull   suppress null warnings for variables\n\
317
\							that got tainted in an assert expression\n\
316
\      syncOverride         missing synchronized in synchr. method override\n\
318
\      syncOverride         missing synchronized in synchr. method override\n\
317
\      syntheticAccess      synthetic access for innerclass\n\
319
\      syntheticAccess      synthetic access for innerclass\n\
318
\      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
320
\      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
(-)compiler/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java (+6 lines)
Lines 14-19 Link Here
14
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
14
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
15
import org.eclipse.jdt.internal.compiler.codegen.*;
15
import org.eclipse.jdt.internal.compiler.codegen.*;
16
import org.eclipse.jdt.internal.compiler.flow.*;
16
import org.eclipse.jdt.internal.compiler.flow.*;
17
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
17
import org.eclipse.jdt.internal.compiler.impl.Constant;
18
import org.eclipse.jdt.internal.compiler.impl.Constant;
18
import org.eclipse.jdt.internal.compiler.lookup.*;
19
import org.eclipse.jdt.internal.compiler.lookup.*;
19
import org.eclipse.jdt.internal.compiler.ASTVisitor;
20
import org.eclipse.jdt.internal.compiler.ASTVisitor;
Lines 82-87 Link Here
82
		// change this if we need to carry null analysis results of the assert
83
		// change this if we need to carry null analysis results of the assert
83
		// expression downstream
84
		// expression downstream
84
	} else {
85
	} else {
86
		CompilerOptions compilerOptions = currentScope.compilerOptions();
87
		if (compilerOptions.suppressNullInfoFromAsserts) {
88
			// keep just the initializations info, don't include assert's null info
89
			return flowInfo.mergedWith(assertInfo.nullInfoLessUnconditionalCopy());
90
		}
85
		return flowInfo.mergedWith(assertInfo.nullInfoLessUnconditionalCopy()).
91
		return flowInfo.mergedWith(assertInfo.nullInfoLessUnconditionalCopy()).
86
			addInitializationsFrom(assertWhenTrueInfo.discardInitializationInfo());
92
			addInitializationsFrom(assertWhenTrueInfo.discardInitializationInfo());
87
		// keep the merge from the initial code for the definite assignment
93
		// keep the merge from the initial code for the definite assignment
(-)compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java (-1 / +15 lines)
Lines 131-137 Link Here
131
	public static final String OPTION_ReportDeadCodeInTrivialIfStatement =  "org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement"; //$NON-NLS-1$
131
	public static final String OPTION_ReportDeadCodeInTrivialIfStatement =  "org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement"; //$NON-NLS-1$
132
	public static final String OPTION_ReportTasks = "org.eclipse.jdt.core.compiler.problem.tasks"; //$NON-NLS-1$
132
	public static final String OPTION_ReportTasks = "org.eclipse.jdt.core.compiler.problem.tasks"; //$NON-NLS-1$
133
	public static final String OPTION_ReportUnusedObjectAllocation = "org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation";  //$NON-NLS-1$
133
	public static final String OPTION_ReportUnusedObjectAllocation = "org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation";  //$NON-NLS-1$
134
134
	public static final String OPTION_SuppressNullInfoFromAsserts = "org.eclipse.jdt.core.compiler.problem.suppressNullInfoFromAsserts";  //$NON-NLS-1$
135
	// Backward compatibility
135
	// Backward compatibility
136
	public static final String OPTION_ReportInvalidAnnotation = "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"; //$NON-NLS-1$
136
	public static final String OPTION_ReportInvalidAnnotation = "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"; //$NON-NLS-1$
137
	public static final String OPTION_ReportMissingAnnotation = "org.eclipse.jdt.core.compiler.problem.missingAnnotation"; //$NON-NLS-1$
137
	public static final String OPTION_ReportMissingAnnotation = "org.eclipse.jdt.core.compiler.problem.missingAnnotation"; //$NON-NLS-1$
Lines 352-357 Link Here
352
	public boolean generateClassFiles;
352
	public boolean generateClassFiles;
353
	/** Indicate if method bodies should be ignored */
353
	/** Indicate if method bodies should be ignored */
354
	public boolean ignoreMethodBodies;
354
	public boolean ignoreMethodBodies;
355
	/** Suppress null related warnings for variables tainted inside an assert statement (java 1.5 and above)*/
356
	public boolean suppressNullInfoFromAsserts;
355
357
356
	// keep in sync with warningTokenToIrritant and warningTokenFromIrritant
358
	// keep in sync with warningTokenToIrritant and warningTokenFromIrritant
357
	public final static String[] warningTokens = {
359
	public final static String[] warningTokens = {
Lines 914-919 Link Here
914
		optionsMap.put(OPTION_ReportDeadCodeInTrivialIfStatement, this.reportDeadCodeInTrivialIfStatement ? ENABLED : DISABLED);
916
		optionsMap.put(OPTION_ReportDeadCodeInTrivialIfStatement, this.reportDeadCodeInTrivialIfStatement ? ENABLED : DISABLED);
915
		optionsMap.put(OPTION_ReportTasks, getSeverityString(Tasks));
917
		optionsMap.put(OPTION_ReportTasks, getSeverityString(Tasks));
916
		optionsMap.put(OPTION_ReportUnusedObjectAllocation, getSeverityString(UnusedObjectAllocation));
918
		optionsMap.put(OPTION_ReportUnusedObjectAllocation, getSeverityString(UnusedObjectAllocation));
919
		optionsMap.put(OPTION_SuppressNullInfoFromAsserts, this.suppressNullInfoFromAsserts ? ENABLED : DISABLED);
917
		return optionsMap;
920
		return optionsMap;
918
	}
921
	}
919
922
Lines 1058-1063 Link Here
1058
		
1061
		
1059
		// ignore method bodies
1062
		// ignore method bodies
1060
		this.ignoreMethodBodies = false;
1063
		this.ignoreMethodBodies = false;
1064
		
1065
		// allow null info from asserts to be considered downstream by default
1066
		this.suppressNullInfoFromAsserts = false;
1061
	}
1067
	}
1062
1068
1063
	public void set(Map optionsMap) {
1069
	public void set(Map optionsMap) {
Lines 1264-1269 Link Here
1264
				this.reportMissingOverrideAnnotationForInterfaceMethodImplementation = false;
1270
				this.reportMissingOverrideAnnotationForInterfaceMethodImplementation = false;
1265
			}
1271
			}
1266
		}
1272
		}
1273
		if ((optionValue = optionsMap.get(OPTION_SuppressNullInfoFromAsserts)) != null) {
1274
			if (ENABLED.equals(optionValue)) {
1275
				this.suppressNullInfoFromAsserts = true;
1276
			} else if (DISABLED.equals(optionValue)) {
1277
				this.suppressNullInfoFromAsserts = false;
1278
			}
1279
		}
1267
		if ((optionValue = optionsMap.get(OPTION_ReportMethodWithConstructorName)) != null) updateSeverity(MethodWithConstructorName, optionValue);
1280
		if ((optionValue = optionsMap.get(OPTION_ReportMethodWithConstructorName)) != null) updateSeverity(MethodWithConstructorName, optionValue);
1268
		if ((optionValue = optionsMap.get(OPTION_ReportOverridingPackageDefaultMethod)) != null) updateSeverity(OverriddenPackageDefaultMethod, optionValue);
1281
		if ((optionValue = optionsMap.get(OPTION_ReportOverridingPackageDefaultMethod)) != null) updateSeverity(OverriddenPackageDefaultMethod, optionValue);
1269
		if ((optionValue = optionsMap.get(OPTION_ReportDeprecation)) != null) updateSeverity(UsingDeprecatedAPI, optionValue);
1282
		if ((optionValue = optionsMap.get(OPTION_ReportDeprecation)) != null) updateSeverity(UsingDeprecatedAPI, optionValue);
Lines 1506-1511 Link Here
1506
		buf.append("\n\t- missing @Override annotation for interface method implementation: ").append(this.reportMissingOverrideAnnotationForInterfaceMethodImplementation ? ENABLED : DISABLED); //$NON-NLS-1$
1519
		buf.append("\n\t- missing @Override annotation for interface method implementation: ").append(this.reportMissingOverrideAnnotationForInterfaceMethodImplementation ? ENABLED : DISABLED); //$NON-NLS-1$
1507
		buf.append("\n\t- missing @Deprecated annotation: ").append(getSeverityString(MissingDeprecatedAnnotation)); //$NON-NLS-1$
1520
		buf.append("\n\t- missing @Deprecated annotation: ").append(getSeverityString(MissingDeprecatedAnnotation)); //$NON-NLS-1$
1508
		buf.append("\n\t- incomplete enum switch: ").append(getSeverityString(IncompleteEnumSwitch)); //$NON-NLS-1$
1521
		buf.append("\n\t- incomplete enum switch: ").append(getSeverityString(IncompleteEnumSwitch)); //$NON-NLS-1$
1522
		buf.append("\n\t- suppress null related warnings for variables tainted in assert statements: ").append(this.suppressNullInfoFromAsserts ? ENABLED : DISABLED); //$NON-NLS-1$
1509
		buf.append("\n\t- suppress warnings: ").append(this.suppressWarnings ? ENABLED : DISABLED); //$NON-NLS-1$
1523
		buf.append("\n\t- suppress warnings: ").append(this.suppressWarnings ? ENABLED : DISABLED); //$NON-NLS-1$
1510
		buf.append("\n\t- suppress optional errors: ").append(this.suppressOptionalErrors ? ENABLED : DISABLED); //$NON-NLS-1$
1524
		buf.append("\n\t- suppress optional errors: ").append(this.suppressOptionalErrors ? ENABLED : DISABLED); //$NON-NLS-1$
1511
		buf.append("\n\t- unhandled warning token: ").append(getSeverityString(UnhandledWarningToken)); //$NON-NLS-1$
1525
		buf.append("\n\t- unhandled warning token: ").append(getSeverityString(UnhandledWarningToken)); //$NON-NLS-1$
(-)src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java (-129 / +182 lines)
Lines 1707-1713 Link Here
1707
        "      super                overriding a method without making a super invocation\n" +
1707
        "      super                overriding a method without making a super invocation\n" +
1708
        "      suppress           + enable @SuppressWarnings\n" + 
1708
        "      suppress           + enable @SuppressWarnings\n" + 
1709
        "                           When used with -err:, it can also silent optional\n" +
1709
        "                           When used with -err:, it can also silent optional\n" +
1710
        "                           errors and warnings\n" + 
1710
        "                           errors and warnings\n" +
1711
        "	   suppressAssertNull   suppress null warnings for variables\n" +
1712
        "							that got tainted in an assert expression\n" +
1711
        "      syncOverride         missing synchronized in synchr. method override\n" +
1713
        "      syncOverride         missing synchronized in synchr. method override\n" +
1712
        "      syntheticAccess      synthetic access for innerclass\n" +
1714
        "      syntheticAccess      synthetic access for innerclass\n" +
1713
        "      tasks(<tags separated by |>) tasks identified by tags inside comments\n" +
1715
        "      tasks(<tags separated by |>) tasks identified by tags inside comments\n" +
Lines 1775-1909 Link Here
1775
				true);
1777
				true);
1776
		String logContents = Util.fileContent(logFileName);
1778
		String logContents = Util.fileContent(logFileName);
1777
		String expectedLogContents =
1779
		String expectedLogContents =
1778
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
1780
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
1779
			"<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.004 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_004.dtd\">\n" +
1781
			"<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.004 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_004.dtd\">\n" + 
1780
			"<compiler copyright=\"{2}\" name=\"{1}\" version=\"{3}\">\n" +
1782
			"<compiler copyright=\"{2}\" name=\"{1}\" version=\"{3}\">\n" + 
1781
			"	<command_line>\n" +
1783
			"	<command_line>\n" + 
1782
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\"/>\n" +
1784
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\"/>\n" + 
1783
			"		<argument value=\"-1.5\"/>\n" +
1785
			"		<argument value=\"-1.5\"/>\n" + 
1784
			"		<argument value=\"-proceedOnError\"/>\n" +
1786
			"		<argument value=\"-proceedOnError\"/>\n" + 
1785
			"		<argument value=\"-log\"/>\n" +
1787
			"		<argument value=\"-log\"/>\n" + 
1786
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}log.xml\"/>\n" +
1788
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}log.xml\"/>\n" + 
1787
			"		<argument value=\"-d\"/>\n" +
1789
			"		<argument value=\"-d\"/>\n" + 
1788
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---\"/>\n" +
1790
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---\"/>\n" + 
1789
			"	</command_line>\n" +
1791
			"	</command_line>\n" + 
1790
			"	<options>\n" +
1792
			"	<options>\n" + 
1791
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode\" value=\"disabled\"/>\n" +
1793
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode\" value=\"disabled\"/>\n" + 
1792
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.targetPlatform\" value=\"1.5\"/>\n" +
1794
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.targetPlatform\" value=\"1.5\"/>\n" + 
1793
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.unusedLocal\" value=\"optimize out\"/>\n" +
1795
			"		<option key=\"org.eclipse.jdt.core.compiler.codegen.unusedLocal\" value=\"optimize out\"/>\n" + 
1794
			"		<option key=\"org.eclipse.jdt.core.compiler.compliance\" value=\"1.5\"/>\n" +
1796
			"		<option key=\"org.eclipse.jdt.core.compiler.compliance\" value=\"1.5\"/>\n" + 
1795
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.lineNumber\" value=\"generate\"/>\n" +
1797
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.lineNumber\" value=\"generate\"/>\n" + 
1796
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.localVariable\" value=\"do not generate\"/>\n" +
1798
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.localVariable\" value=\"do not generate\"/>\n" + 
1797
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.sourceFile\" value=\"generate\"/>\n" +
1799
			"		<option key=\"org.eclipse.jdt.core.compiler.debug.sourceFile\" value=\"generate\"/>\n" + 
1798
			"		<option key=\"org.eclipse.jdt.core.compiler.doc.comment.support\" value=\"disabled\"/>\n" +
1800
			"		<option key=\"org.eclipse.jdt.core.compiler.doc.comment.support\" value=\"disabled\"/>\n" + 
1799
			"		<option key=\"org.eclipse.jdt.core.compiler.generateClassFiles\" value=\"enabled\"/>\n" +
1801
			"		<option key=\"org.eclipse.jdt.core.compiler.generateClassFiles\" value=\"enabled\"/>\n" + 
1800
			"		<option key=\"org.eclipse.jdt.core.compiler.maxProblemPerUnit\" value=\"100\"/>\n" +
1802
			"		<option key=\"org.eclipse.jdt.core.compiler.maxProblemPerUnit\" value=\"100\"/>\n" + 
1801
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.annotationSuperInterface\" value=\"warning\"/>\n" +
1803
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.annotationSuperInterface\" value=\"warning\"/>\n" + 
1802
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.assertIdentifier\" value=\"warning\"/>\n" +
1804
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.assertIdentifier\" value=\"warning\"/>\n" + 
1803
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.autoboxing\" value=\"ignore\"/>\n" +
1805
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.autoboxing\" value=\"ignore\"/>\n" + 
1804
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.comparingIdentical\" value=\"warning\"/>\n" +
1806
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.comparingIdentical\" value=\"warning\"/>\n" + 
1805
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deadCode\" value=\"warning\"/>\n" +
1807
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deadCode\" value=\"warning\"/>\n" + 
1806
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement\" value=\"disabled\"/>\n" +
1808
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement\" value=\"disabled\"/>\n" + 
1807
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecation\" value=\"warning\"/>\n" +
1809
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecation\" value=\"warning\"/>\n" + 
1808
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode\" value=\"disabled\"/>\n" +
1810
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode\" value=\"disabled\"/>\n" + 
1809
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod\" value=\"disabled\"/>\n" +
1811
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod\" value=\"disabled\"/>\n" + 
1810
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.discouragedReference\" value=\"warning\"/>\n" +
1812
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.discouragedReference\" value=\"warning\"/>\n" + 
1811
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.emptyStatement\" value=\"ignore\"/>\n" +
1813
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.emptyStatement\" value=\"ignore\"/>\n" + 
1812
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.enumIdentifier\" value=\"warning\"/>\n" +
1814
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.enumIdentifier\" value=\"warning\"/>\n" + 
1813
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fallthroughCase\" value=\"ignore\"/>\n" +
1815
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fallthroughCase\" value=\"ignore\"/>\n" + 
1814
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fatalOptionalError\" value=\"disabled\"/>\n" +
1816
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fatalOptionalError\" value=\"disabled\"/>\n" + 
1815
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fieldHiding\" value=\"ignore\"/>\n" +
1817
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.fieldHiding\" value=\"ignore\"/>\n" + 
1816
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.finalParameterBound\" value=\"warning\"/>\n" +
1818
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.finalParameterBound\" value=\"warning\"/>\n" + 
1817
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally\" value=\"warning\"/>\n" +
1819
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally\" value=\"warning\"/>\n" + 
1818
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.forbiddenReference\" value=\"warning\"/>\n" +
1820
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.forbiddenReference\" value=\"warning\"/>\n" + 
1819
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock\" value=\"warning\"/>\n" +
1821
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock\" value=\"warning\"/>\n" + 
1820
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod\" value=\"warning\"/>\n" +
1822
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod\" value=\"warning\"/>\n" + 
1821
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch\" value=\"ignore\"/>\n" +
1823
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch\" value=\"ignore\"/>\n" + 
1822
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.indirectStaticAccess\" value=\"ignore\"/>\n" +
1824
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.indirectStaticAccess\" value=\"ignore\"/>\n" + 
1823
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadoc\" value=\"ignore\"/>\n" +
1825
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadoc\" value=\"ignore\"/>\n" + 
1824
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTags\" value=\"disabled\"/>\n" +
1826
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTags\" value=\"disabled\"/>\n" + 
1825
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef\" value=\"disabled\"/>\n" +
1827
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef\" value=\"disabled\"/>\n" + 
1826
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef\" value=\"disabled\"/>\n" +
1828
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef\" value=\"disabled\"/>\n" + 
1827
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility\" value=\"public\"/>\n" +
1829
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility\" value=\"public\"/>\n" + 
1828
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.localVariableHiding\" value=\"ignore\"/>\n" +
1830
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.localVariableHiding\" value=\"ignore\"/>\n" + 
1829
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.methodWithConstructorName\" value=\"warning\"/>\n" +
1831
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.methodWithConstructorName\" value=\"warning\"/>\n" + 
1830
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation\" value=\"ignore\"/>\n" +
1832
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation\" value=\"ignore\"/>\n" + 
1831
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod\" value=\"ignore\"/>\n" +
1833
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod\" value=\"ignore\"/>\n" + 
1832
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocComments\" value=\"ignore\"/>\n" +
1834
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocComments\" value=\"ignore\"/>\n" + 
1833
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding\" value=\"disabled\"/>\n" +
1835
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding\" value=\"disabled\"/>\n" + 
1834
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility\" value=\"public\"/>\n" +
1836
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility\" value=\"public\"/>\n" + 
1835
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription\" value=\"return_tag\"/>\n" +
1837
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription\" value=\"return_tag\"/>\n" + 
1836
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTags\" value=\"ignore\"/>\n" +
1838
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTags\" value=\"ignore\"/>\n" + 
1837
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding\" value=\"disabled\"/>\n" +
1839
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding\" value=\"disabled\"/>\n" + 
1838
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility\" value=\"public\"/>\n" +
1840
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility\" value=\"public\"/>\n" + 
1839
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation\" value=\"ignore\"/>\n" +
1841
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation\" value=\"ignore\"/>\n" + 
1840
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation\" value=\"enabled\"/>\n" +
1842
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation\" value=\"enabled\"/>\n" + 
1841
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingSerialVersion\" value=\"warning\"/>\n" +
1843
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingSerialVersion\" value=\"warning\"/>\n" + 
1842
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod\" value=\"ignore\"/>\n" +
1844
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod\" value=\"ignore\"/>\n" + 
1843
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.noEffectAssignment\" value=\"warning\"/>\n" +
1845
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.noEffectAssignment\" value=\"warning\"/>\n" + 
1844
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion\" value=\"warning\"/>\n" +
1846
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion\" value=\"warning\"/>\n" + 
1845
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral\" value=\"ignore\"/>\n" +
1847
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral\" value=\"ignore\"/>\n" + 
1846
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.nullReference\" value=\"warning\"/>\n" +
1848
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.nullReference\" value=\"warning\"/>\n" + 
1847
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.overridingMethodWithoutSuperInvocation\" value=\"ignore\"/>\n" +
1849
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.overridingMethodWithoutSuperInvocation\" value=\"ignore\"/>\n" + 
1848
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod\" value=\"warning\"/>\n" +
1850
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod\" value=\"warning\"/>\n" + 
1849
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.parameterAssignment\" value=\"ignore\"/>\n" +
1851
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.parameterAssignment\" value=\"ignore\"/>\n" + 
1850
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment\" value=\"ignore\"/>\n" +
1852
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment\" value=\"ignore\"/>\n" + 
1851
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.potentialNullReference\" value=\"ignore\"/>\n" +
1853
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.potentialNullReference\" value=\"ignore\"/>\n" + 
1852
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.rawTypeReference\" value=\"warning\"/>\n" +
1854
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.rawTypeReference\" value=\"warning\"/>\n" + 
1853
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.redundantNullCheck\" value=\"ignore\"/>\n" +
1855
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.redundantNullCheck\" value=\"ignore\"/>\n" + 
1854
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.redundantSuperinterface\" value=\"ignore\"/>\n" +
1856
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.redundantSuperinterface\" value=\"ignore\"/>\n" + 
1855
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.specialParameterHidingField\" value=\"disabled\"/>\n" +
1857
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.specialParameterHidingField\" value=\"disabled\"/>\n" + 
1856
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.staticAccessReceiver\" value=\"warning\"/>\n" +
1858
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.staticAccessReceiver\" value=\"warning\"/>\n" + 
1857
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors\" value=\"disabled\"/>\n" +
1859
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.suppressNullInfoFromAsserts\" value=\"disabled\"/>\n" + 
1858
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.suppressWarnings\" value=\"enabled\"/>\n" +
1860
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors\" value=\"disabled\"/>\n" + 
1859
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation\" value=\"ignore\"/>\n" +
1861
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.suppressWarnings\" value=\"enabled\"/>\n" + 
1862
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation\" value=\"ignore\"/>\n" + 
1860
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.tasks\" value=\"warning\"/>\n" + 
1863
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.tasks\" value=\"warning\"/>\n" + 
1861
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.typeParameterHiding\" value=\"warning\"/>\n" +
1864
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.typeParameterHiding\" value=\"warning\"/>\n" + 
1862
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation\" value=\"warning\"/>\n" +
1865
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation\" value=\"warning\"/>\n" + 
1863
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock\" value=\"ignore\"/>\n" +
1866
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock\" value=\"ignore\"/>\n" + 
1864
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unhandledWarningToken\" value=\"warning\"/>\n" +
1867
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unhandledWarningToken\" value=\"warning\"/>\n" + 
1865
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unnecessaryElse\" value=\"ignore\"/>\n" +
1868
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unnecessaryElse\" value=\"ignore\"/>\n" + 
1866
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck\" value=\"ignore\"/>\n" +
1869
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck\" value=\"ignore\"/>\n" + 
1867
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess\" value=\"ignore\"/>\n" +
1870
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess\" value=\"ignore\"/>\n" + 
1868
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException\" value=\"ignore\"/>\n" +
1871
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException\" value=\"ignore\"/>\n" + 
1869
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable\" value=\"enabled\"/>\n" +
1872
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable\" value=\"enabled\"/>\n" + 
1870
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference\" value=\"enabled\"/>\n" +
1873
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference\" value=\"enabled\"/>\n" + 
1871
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding\" value=\"disabled\"/>\n" +
1874
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding\" value=\"disabled\"/>\n" + 
1872
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedImport\" value=\"warning\"/>\n" +
1875
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedImport\" value=\"warning\"/>\n" + 
1873
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedLabel\" value=\"warning\"/>\n" +
1876
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedLabel\" value=\"warning\"/>\n" + 
1874
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedLocal\" value=\"warning\"/>\n" +
1877
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedLocal\" value=\"warning\"/>\n" + 
1875
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation\" value=\"ignore\"/>\n" +
1878
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation\" value=\"ignore\"/>\n" + 
1876
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameter\" value=\"ignore\"/>\n" +
1879
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameter\" value=\"ignore\"/>\n" + 
1877
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference\" value=\"enabled\"/>\n" +
1880
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference\" value=\"enabled\"/>\n" + 
1878
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract\" value=\"disabled\"/>\n" +
1881
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract\" value=\"disabled\"/>\n" + 
1879
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete\" value=\"disabled\"/>\n" +
1882
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete\" value=\"disabled\"/>\n" + 
1880
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedPrivateMember\" value=\"warning\"/>\n" +
1883
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedPrivateMember\" value=\"warning\"/>\n" + 
1881
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedTypeArgumentsForMethodInvocation\" value=\"warning\"/>\n" +
1884
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedTypeArgumentsForMethodInvocation\" value=\"warning\"/>\n" + 
1882
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedWarningToken\" value=\"warning\"/>\n" +			"		<option key=\"org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast\" value=\"warning\"/>\n" +
1885
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.unusedWarningToken\" value=\"warning\"/>\n" + 
1883
			"		<option key=\"org.eclipse.jdt.core.compiler.processAnnotations\" value=\"disabled\"/>\n" +
1886
			"		<option key=\"org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast\" value=\"warning\"/>\n" + 
1884
			"		<option key=\"org.eclipse.jdt.core.compiler.source\" value=\"1.5\"/>\n" +
1887
			"		<option key=\"org.eclipse.jdt.core.compiler.processAnnotations\" value=\"disabled\"/>\n" + 
1885
			"		<option key=\"org.eclipse.jdt.core.compiler.taskCaseSensitive\" value=\"enabled\"/>\n" +
1888
			"		<option key=\"org.eclipse.jdt.core.compiler.source\" value=\"1.5\"/>\n" + 
1886
			"		<option key=\"org.eclipse.jdt.core.compiler.taskPriorities\" value=\"\"/>\n" +
1889
			"		<option key=\"org.eclipse.jdt.core.compiler.taskCaseSensitive\" value=\"enabled\"/>\n" + 
1887
			"		<option key=\"org.eclipse.jdt.core.compiler.taskTags\" value=\"\"/>\n" +
1890
			"		<option key=\"org.eclipse.jdt.core.compiler.taskPriorities\" value=\"\"/>\n" + 
1888
			"	</options>\n" +
1891
			"		<option key=\"org.eclipse.jdt.core.compiler.taskTags\" value=\"\"/>\n" + 
1889
			"	<classpaths>NORMALIZED SECTION</classpaths>\n" +
1892
			"	</options>\n" + 
1890
			"	<sources>\n" +
1893
			"	<classpaths>NORMALIZED SECTION</classpaths>\n" + 
1891
			"		<source output=\"---OUTPUT_DIR_PLACEHOLDER---\" path=\"---OUTPUT_DIR_PLACEHOLDER---" + File.separator + "X.java\">\n" +
1894
			"	<sources>\n" + 
1892
			"			<problems errors=\"1\" problems=\"1\" warnings=\"0\">\n" +
1895
			"		<source output=\"---OUTPUT_DIR_PLACEHOLDER---\" path=\"---OUTPUT_DIR_PLACEHOLDER---" + File.separator + "X.java\">\n" + 
1893
			"				<problem categoryID=\"40\" charEnd=\"28\" charStart=\"25\" id=\"UndefinedType\" line=\"3\" problemID=\"16777218\" severity=\"ERROR\">\n" +
1896
			"			<problems errors=\"1\" problems=\"1\" warnings=\"0\">\n" + 
1894
			"					<message value=\"Zork cannot be resolved to a type\"/>\n" +
1897
			"				<problem categoryID=\"40\" charEnd=\"28\" charStart=\"25\" id=\"UndefinedType\" line=\"3\" problemID=\"16777218\" severity=\"ERROR\">\n" + 
1895
			"					<source_context sourceEnd=\"3\" sourceStart=\"0\" value=\"Zork z;\"/>\n" +
1898
			"					<message value=\"Zork cannot be resolved to a type\"/>\n" + 
1896
			"					<arguments>\n" +
1899
			"					<source_context sourceEnd=\"3\" sourceStart=\"0\" value=\"Zork z;\"/>\n" + 
1897
			"						<argument value=\"Zork\"/>\n" +
1900
			"					<arguments>\n" + 
1898
			"					</arguments>\n" +
1901
			"						<argument value=\"Zork\"/>\n" + 
1899
			"				</problem>\n" +
1902
			"					</arguments>\n" + 
1900
			"			</problems>\n" +
1903
			"				</problem>\n" + 
1901
			"			<classfile path=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.class\"/>\n" +
1904
			"			</problems>\n" + 
1902
			"		</source>\n" +
1905
			"			<classfile path=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.class\"/>\n" + 
1903
			"	</sources>\n" +
1906
			"		</source>\n" + 
1904
			"	<stats>\n" +
1907
			"	</sources>\n" + 
1905
			"		<problem_summary errors=\"1\" problems=\"1\" tasks=\"0\" warnings=\"0\"/>\n" +
1908
			"	<stats>\n" + 
1906
			"	</stats>\n" +
1909
			"		<problem_summary errors=\"1\" problems=\"1\" tasks=\"0\" warnings=\"0\"/>\n" + 
1910
			"	</stats>\n" + 
1907
			"</compiler>\n";
1911
			"</compiler>\n";
1908
		String normalizedExpectedLogContents =
1912
		String normalizedExpectedLogContents =
1909
				MessageFormat.format(
1913
				MessageFormat.format(
Lines 11123-11128 Link Here
11123
		"3 problems (3 warnings)",
11127
		"3 problems (3 warnings)",
11124
		true);
11128
		true);
11125
}
11129
}
11130
11131
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
11132
// -warn option - regression tests to check option suppressAssertNull
11133
public void test293_warn_options() {
11134
	this.runConformTest(
11135
		new String[] {
11136
			"X.java",
11137
			"public class X {\n" +
11138
			"	void foo(Object a, Object b, Object c) {\n" +
11139
			"		assert a == null;\n " +
11140
			"		if (a!=null) {\n" +
11141
			"			System.out.println(\"a is not null\");\n" +
11142
			"		 } else{\n" +
11143
			"			System.out.println(\"a is null\");\n" +
11144
			"		 }\n" +
11145
			"		a = null;\n" +
11146
			"		if (a== null) {}\n" +
11147
			"		assert b != null;\n " +
11148
			"		if (b!=null) {\n" +
11149
			"			System.out.println(\"b is not null\");\n" +
11150
			"		 } else{\n" +
11151
			"			System.out.println(\"b is null\");\n" +
11152
			"		 }\n" +
11153
			"		assert c == null;\n" +
11154
			"		if (c.equals(a)) {\n" +
11155
			"			System.out.println(\"\");\n" +
11156
			"		 } else{\n" +
11157
			"			System.out.println(\"\");\n" +
11158
			"		 }\n" +
11159
			"	}\n" +
11160
			"	public static void main(String[] args){\n" +
11161
			"		X test = new X();\n" +
11162
			"		test.foo(null,null, null);\n" +
11163
			"	}\n" +
11164
			"}\n",
11165
		},
11166
		"\"" + OUTPUT_DIR +  File.separator + "X.java\""
11167
		+ " -sourcepath \"" + OUTPUT_DIR + "\""
11168
		+ " -warn:null,suppressAssertNull -1.5 -proc:none -d \"" + OUTPUT_DIR + "\"",
11169
		"",
11170
		"----------\n" +
11171
		"1. WARNING in ---OUTPUT_DIR_PLACEHOLDER---/X.java (at line 10)\n" + 
11172
		"	if (a== null) {}\n" + 
11173
		"	    ^\n" + 
11174
		"Redundant null check: The variable a can only be null at this location\n" + 
11175
		"----------\n" + 
11176
		"1 problem (1 warning)",
11177
		true);
11178
}
11126
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=280784
11179
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=280784
11127
public void test293(){
11180
public void test293(){
11128
	createCascadedJars();
11181
	createCascadedJars();
(-)src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java (+104 lines)
Lines 13493-13496 Link Here
13493
			null);
13493
			null);
13494
	}
13494
	}
13495
}
13495
}
13496
13497
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
13498
// EqualExpression in assert, comparison against non null
13499
public void testBug325342a() {
13500
	if (this.complianceLevel >= ClassFileConstants.JDK1_5) {
13501
		Map compilerOptions = getCompilerOptions();
13502
		compilerOptions.put(CompilerOptions.OPTION_SuppressNullInfoFromAsserts, CompilerOptions.ENABLED);
13503
		this.runNegativeTest(
13504
			new String[] {
13505
				"Test.java",
13506
				"public class Test {\n" +
13507
				"	void foo(Object a, Object b, Object c) {\n" +
13508
				"		assert a == null;\n " +
13509
				"		if (a!=null) {\n" +
13510
				"			System.out.println(\"a is not null\");\n" +
13511
				"		 } else{\n" +
13512
				"			System.out.println(\"a is null\");\n" +
13513
				"		 }\n" +
13514
				"		a = null;\n" +
13515
				"		if (a== null) {}\n" +
13516
				"		assert b != null;\n " +
13517
				"		if (b!=null) {\n" +
13518
				"			System.out.println(\"b is not null\");\n" +
13519
				"		 } else{\n" +
13520
				"			System.out.println(\"b is null\");\n" +
13521
				"		 }\n" +
13522
				"		assert c == null;\n" +
13523
				"		if (c.equals(a)) {\n" +
13524
				"			System.out.println(\"\");\n" +
13525
				"		 } else{\n" +
13526
				"			System.out.println(\"\");\n" +
13527
				"		 }\n" +
13528
				"	}\n" +
13529
				"	public static void main(String[] args){\n" +
13530
				"		Test test = new Test();\n" +
13531
				"		test.foo(null,null, null);\n" +
13532
				"	}\n" +
13533
				"}\n"},
13534
			"----------\n" + 
13535
			"1. ERROR in Test.java (at line 10)\n" + 
13536
			"	if (a== null) {}\n" + 
13537
			"	    ^\n" + 
13538
			"Redundant null check: The variable a can only be null at this location\n" + 
13539
			"----------\n",
13540
			null,
13541
			true,
13542
			compilerOptions);
13543
	}
13544
}
13545
13546
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
13547
// EqualExpression in assert, comparison against non null
13548
public void testBug325342b() {
13549
	if (this.complianceLevel >= ClassFileConstants.JDK1_5) {
13550
		Map compilerOptions = getCompilerOptions();
13551
		compilerOptions.put(CompilerOptions.OPTION_SuppressNullInfoFromAsserts, CompilerOptions.DISABLED);
13552
		this.runNegativeTest(
13553
			new String[] {
13554
				"Test.java",
13555
				"public class Test {\n" +
13556
				"	void foo(Object a, Object b, Object c) {\n" +
13557
				"		assert a == null;\n " +
13558
				"		if (a!=null) {\n" +
13559
				"			System.out.println(\"a is not null\");\n" +
13560
				"		 } else{\n" +
13561
				"			System.out.println(\"a is null\");\n" +
13562
				"		 }\n" +
13563
				"		assert b != null;\n " +
13564
				"		if (b!=null) {\n" +
13565
				"			System.out.println(\"a is not null\");\n" +
13566
				"		 } else{\n" +
13567
				"			System.out.println(\"a is null\");\n" +
13568
				"		 }\n" +
13569
				"		assert c == null;\n" +
13570
				"		if (c.equals(a)) {\n" +
13571
				"			System.out.println(\"\");\n" +
13572
				"		 } else{\n" +
13573
				"			System.out.println(\"\");\n" +
13574
				"		 }\n" +
13575
				"	}\n" +
13576
				"	public static void main(String[] args){\n" +
13577
				"		Test test = new Test();\n" +
13578
				"		test.foo(null,null,null);\n" +
13579
				"	}\n" +
13580
				"}\n"},
13581
			"----------\n" + 
13582
			"1. ERROR in Test.java (at line 4)\n" + 
13583
			"	if (a!=null) {\n" + 
13584
			"	    ^\n" + 
13585
			"Null comparison always yields false: The variable a can only be null at this location\n" + 
13586
			"----------\n" + 
13587
			"2. ERROR in Test.java (at line 10)\n" + 
13588
			"	if (b!=null) {\n" + 
13589
			"	    ^\n" + 
13590
			"Redundant null check: The variable b cannot be null at this location\n" + 
13591
			"----------\n" + 
13592
			"3. ERROR in Test.java (at line 16)\n" + 
13593
			"	if (c.equals(a)) {\n" + 
13594
			"	    ^\n" + 
13595
			"Null pointer access: The variable c can only be null at this location\n" + 
13596
			"----------\n",
13597
			null, true, compilerOptions);
13598
	}
13599
}
13496
}
13600
}

Return to bug 325342