updated JDT/Core tests to v_B18
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
index d762c6c..86af048 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
@@ -1716,6 +1716,8 @@
         "      hashCode              missing hashCode() method when overriding equals()\n" + 
         "      hiding               macro for fieldHiding, localHiding, typeHiding and\n" +
         "                           maskedCatchBlock\n" +
+        "      includeAssertNull    raise null warnings for variables\n" + 
+        "                           that got tainted in an assert expression\n" + 
         "      incomplete-switch    same as enumSwitch\n" +
         "      indirectStatic       indirect reference to static member\n" +
 //OT:
@@ -1859,6 +1861,7 @@
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally\" value=\"warning\"/>\n" +
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.forbiddenReference\" value=\"warning\"/>\n" +
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock\" value=\"warning\"/>\n" +
+			"		<option key=\"org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts\" value=\"disabled\"/>\n" + 
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod\" value=\"warning\"/>\n" +
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch\" value=\"ignore\"/>\n" +
 			"		<option key=\"org.eclipse.jdt.core.compiler.problem.indirectStaticAccess\" value=\"ignore\"/>\n" +
@@ -11188,6 +11191,72 @@
 		"3 problems (3 warnings)",
 		true);
 }
+
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
+// -warn option - regression tests to check option includeAssertNull
+// No null problems arising from asserts should be reported here
+// since includeAssertNull is not enabled
+public void test293_warn_options() {
+	this.runConformTest(
+		new String[] {
+			"X.java",
+			"public class X {\n" +
+			"	void foo(Object a, Object b, Object c) {\n" +
+			"		assert a == null;\n " +
+			"		if (a!=null) {\n" +
+			"			System.out.println(\"a is not null\");\n" +
+			"		 } else{\n" +
+			"			System.out.println(\"a is null\");\n" +
+			"		 }\n" +
+			"		a = null;\n" +
+			"		if (a== null) {}\n" +
+			"		assert b != null;\n " +
+			"		if (b!=null) {\n" +
+			"			System.out.println(\"b is not null\");\n" +
+			"		 } else{\n" +
+			"			System.out.println(\"b is null\");\n" +
+			"		 }\n" +
+			"		assert c == null;\n" +
+			"		if (c.equals(a)) {\n" +
+			"			System.out.println(\"\");\n" +
+			"		 } else{\n" +
+			"			System.out.println(\"\");\n" +
+			"		 }\n" +
+			"	}\n" +
+			"	public static void main(String[] args){\n" +
+			"		X test = new X();\n" +
+			"		test.foo(null,null, null);\n" +
+			"	}\n" +
+			"}\n",
+		},
+		"\"" + OUTPUT_DIR +  File.separator + "X.java\""
+		+ " -sourcepath \"" + OUTPUT_DIR + "\""
+		+ " -warn:null,includeAssertNull -1.5 -proc:none -d \"" + OUTPUT_DIR + "\"",
+		"",
+		"----------\n" + 
+		"1. WARNING in ---OUTPUT_DIR_PLACEHOLDER---/X.java (at line 4)\n" + 
+		"	if (a!=null) {\n" + 
+		"	    ^\n" + 
+		"Null comparison always yields false: The variable a can only be null at this location\n" + 
+		"----------\n" + 
+		"2. WARNING in ---OUTPUT_DIR_PLACEHOLDER---/X.java (at line 10)\n" + 
+		"	if (a== null) {}\n" + 
+		"	    ^\n" + 
+		"Redundant null check: The variable a can only be null at this location\n" + 
+		"----------\n" + 
+		"3. WARNING in ---OUTPUT_DIR_PLACEHOLDER---/X.java (at line 12)\n" + 
+		"	if (b!=null) {\n" + 
+		"	    ^\n" + 
+		"Redundant null check: The variable b cannot be null at this location\n" + 
+		"----------\n" + 
+		"4. WARNING in ---OUTPUT_DIR_PLACEHOLDER---/X.java (at line 18)\n" + 
+		"	if (c.equals(a)) {\n" + 
+		"	    ^\n" +  
+		"Null pointer access: The variable c can only be null at this location\n" + 
+		"----------\n" + 
+		"4 problems (4 warnings)", 
+		true);
+}
 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=280784
 public void test293(){
 	createCascadedJars();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
index 6b1bb77..a5e3d48 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
@@ -73,6 +73,7 @@
 		options.put(CompilerOptions.OPTION_ReportDeprecation, CompilerOptions.ERROR);
 		options.put(CompilerOptions.OPTION_ReportUnusedImport, CompilerOptions.ERROR);
 		options.put(CompilerOptions.OPTION_ReportUnusedPrivateMember, CompilerOptions.IGNORE);
+		options.put(CompilerOptions.OPTION_ReportMissingJavadocTagsMethodTypeParameters, CompilerOptions.ENABLED);
 		return options;
 	}
 	/* (non-Javadoc)
@@ -4154,5 +4155,80 @@
 				"	" +
 				" }\n"	
 		});
-	}	
+	}
+	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581
+	// To test the javadoc option CompilerOptions.OPTION_ReportMissingJavadocTagsMethodTypeParameters
+	public void testBug322581a() {
+		Map options = getCompilerOptions();
+		options.put(CompilerOptions.OPTION_ReportMissingJavadocTagsMethodTypeParameters, CompilerOptions.DISABLED);
+		this.runNegativeTest(
+			true,
+			new String[] {
+				"X.java",
+				" public class X {\n" +
+					"	/**\n" +
+					"	 * javadoc\n" +
+					"	 */\n" +
+					"	public <T, U, V> void foo(int val, Object obj) {}\n" +
+					"}"
+			},
+			null,
+			options,
+			"----------\n" +
+			"1. ERROR in X.java (at line 5)\n" + 
+			"	public <T, U, V> void foo(int val, Object obj) {}\n" + 
+			"	                              ^^^\n" + 
+			"Javadoc: Missing tag for parameter val\n" + 
+			"----------\n" + 
+			"2. ERROR in X.java (at line 5)\n" + 
+			"	public <T, U, V> void foo(int val, Object obj) {}\n" + 
+			"	                                          ^^^\n" + 
+			"Javadoc: Missing tag for parameter obj\n" + 
+			"----------\n",
+			JavacTestOptions.Excuse.EclipseWarningConfiguredAsError
+		);
+	}
+	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581
+	// To test the javadoc option CompilerOptions.OPTION_ReportMissingJavadocTagsMethodTypeParameters
+	public void testBug322581b() {
+		Map options = getCompilerOptions();
+		options.put(CompilerOptions.OPTION_ReportMissingJavadocTagsMethodTypeParameters, CompilerOptions.DISABLED);
+		this.runNegativeTest(
+			true,
+			new String[] {
+				"ListCallable.java",
+				" import java.util.Collections;\n" +
+				" import java.util.List;\n" +
+				" import java.util.concurrent.Callable;\n" +
+				"/**\n" +
+				" * Callable that returns a list.\n" +
+				" */\n" +
+				"public abstract class ListCallable<V> implements Callable<List<V>> { // good warning\n" +
+				"	public abstract List<V> call() throws Exception;\n" +
+				"    /**\n" +
+				"	 * Returns a {@link ListCallable} that wraps the result from calling <code>callable</code>.\n" +
+				"    * @param callable the {@link Callable} to wrap\n" +
+				"	 * @return the wrapper\n" +
+				"    */\n" + 
+				"	public static <T> ListCallable<T> from(final Callable<T> callable) { // don't warn\n" +
+				"		return new ListCallable<T>() {\n" +
+				"			@Override\n" +
+				"			public List<T> call() throws Exception {\n" +
+				"				return Collections.singletonList(callable.call());\n" +
+				"			}\n" +
+				"		};\n" +
+				"	}\n" +
+				"}"
+			},
+			null,
+			options,
+			"----------\n" +
+			"1. ERROR in ListCallable.java (at line 7)\n" + 
+			"	public abstract class ListCallable<V> implements Callable<List<V>> { // good warning\n" + 
+			"	                                   ^\n" + 
+			"Javadoc: Missing tag for parameter V\n" + 
+			"----------\n",
+			JavacTestOptions.Excuse.EclipseWarningConfiguredAsError
+		);
+	}
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java
new file mode 100644
index 0000000..5ee5d08
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests.compiler.regression;
+
+import java.io.File;
+import java.util.Map;
+
+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+
+import junit.framework.Test;
+
+public class Jsr14Test extends AbstractRegressionTest {
+
+public Jsr14Test(String name) {
+	super(name);
+}
+protected Map getCompilerOptions() {
+	Map options = super.getCompilerOptions();
+	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
+	options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5);
+	options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
+	return options;
+}
+// Static initializer to specify tests subset using TESTS_* static variables
+// All specified tests which does not belong to the class are skipped...
+static {
+//	TESTS_NAMES = new String[] { "test000" };
+//	TESTS_NUMBERS = new int[] { 15 };
+//	TESTS_RANGE = new int[] { 11, -1 };
+}
+public static Test suite() {
+	return buildMinimalComplianceTestSuite(testClass(), F_1_4);
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450
+public void test1() throws Exception {
+	this.runConformTest(
+		new String[] {
+			"X.java",
+			"public class X {\n" + 
+			"	public static void main(String[] args) {\n" + 
+			"		System.out.println(X.class);\n" + 
+			"	}\n" + 
+			"}",
+		},
+		"class X");
+	String expectedOutput =
+		"  // Method descriptor #18 ([Ljava/lang/String;)V\n" + 
+		"  // Stack: 3, Locals: 1\n" + 
+		"  public static void main(java.lang.String[] args);\n" + 
+		"     0  getstatic java.lang.System.out : java.io.PrintStream [19]\n" + 
+		"     3  getstatic X.class$0 : java.lang.Class [25]\n" + 
+		"     6  dup\n" + 
+		"     7  ifnonnull 35\n" + 
+		"    10  pop\n" + 
+		"    11  ldc <String \"X\"> [27]\n" + 
+		"    13  invokestatic java.lang.Class.forName(java.lang.String) : java.lang.Class [28]\n" + 
+		"    16  dup\n" + 
+		"    17  putstatic X.class$0 : java.lang.Class [25]\n" + 
+		"    20  goto 35\n" + 
+		"    23  new java.lang.NoClassDefFoundError [34]\n" + 
+		"    26  dup_x1\n" + 
+		"    27  swap\n" + 
+		"    28  invokevirtual java.lang.Throwable.getMessage() : java.lang.String [36]\n" + 
+		"    31  invokespecial java.lang.NoClassDefFoundError(java.lang.String) [42]\n" + 
+		"    34  athrow\n" + 
+		"    35  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [45]\n" + 
+		"    38  return\n";
+	checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
+}
+public static Class testClass() {
+	return Jsr14Test.class;
+}
+}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
index 6736c33..7b1fcb0 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
@@ -57,6 +57,7 @@
 	    defaultOptions.put(CompilerOptions.OPTION_ReportPotentialNullReference, CompilerOptions.ERROR);
 	    defaultOptions.put(CompilerOptions.OPTION_ReportRedundantNullCheck, CompilerOptions.ERROR);
 		defaultOptions.put(CompilerOptions.OPTION_ReportRawTypeReference, CompilerOptions.IGNORE);
+		defaultOptions.put(CompilerOptions.OPTION_IncludeNullInfoFromAsserts, CompilerOptions.ENABLED);
     }
     return defaultOptions;
 }
@@ -13494,6 +13495,112 @@
 	}
 }
 
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
+// Null warnings because of assert statements should be suppressed
+// when CompilerOptions.OPTION_IncludeNullInfoFromAsserts is disabled.
+public void testBug325342a() {
+	if (this.complianceLevel >= ClassFileConstants.JDK1_5) {
+		Map compilerOptions = getCompilerOptions();
+		compilerOptions.put(CompilerOptions.OPTION_IncludeNullInfoFromAsserts, CompilerOptions.DISABLED);
+		this.runNegativeTest(
+			new String[] {
+				"Test.java",
+				"public class Test {\n" +
+				"	void foo(Object a, Object b, Object c) {\n" +
+				"		assert a == null;\n " +
+				"		if (a!=null) {\n" +
+				"			System.out.println(\"a is not null\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"a is null\");\n" +
+				"		 }\n" +
+				"		a = null;\n" +
+				"		if (a== null) {}\n" +
+				"		assert b != null;\n " +
+				"		if (b!=null) {\n" +
+				"			System.out.println(\"b is not null\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"b is null\");\n" +
+				"		 }\n" +
+				"		assert c == null;\n" +
+				"		if (c.equals(a)) {\n" +
+				"			System.out.println(\"\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"\");\n" +
+				"		 }\n" +
+				"	}\n" +
+				"	public static void main(String[] args){\n" +
+				"		Test test = new Test();\n" +
+				"		test.foo(null,null, null);\n" +
+				"	}\n" +
+				"}\n"},
+			"----------\n" + 
+			"1. ERROR in Test.java (at line 10)\n" + 
+			"	if (a== null) {}\n" + 
+			"	    ^\n" + 
+			"Redundant null check: The variable a can only be null at this location\n" + 
+			"----------\n",
+			null,
+			true,
+			compilerOptions);
+	}
+}
+
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342
+// Null warnings because of assert statements should not be suppressed
+// when CompilerOptions.OPTION_IncludeNullInfoFromAsserts is enabled.
+public void testBug325342b() {
+	if (this.complianceLevel >= ClassFileConstants.JDK1_5) {
+		Map compilerOptions = getCompilerOptions();
+		compilerOptions.put(CompilerOptions.OPTION_IncludeNullInfoFromAsserts, CompilerOptions.ENABLED);
+		this.runNegativeTest(
+			new String[] {
+				"Test.java",
+				"public class Test {\n" +
+				"	void foo(Object a, Object b, Object c) {\n" +
+				"		assert a == null;\n " +
+				"		if (a!=null) {\n" +
+				"			System.out.println(\"a is not null\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"a is null\");\n" +
+				"		 }\n" +
+				"		assert b != null;\n " +
+				"		if (b!=null) {\n" +
+				"			System.out.println(\"a is not null\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"a is null\");\n" +
+				"		 }\n" +
+				"		assert c == null;\n" +
+				"		if (c.equals(a)) {\n" +
+				"			System.out.println(\"\");\n" +
+				"		 } else{\n" +
+				"			System.out.println(\"\");\n" +
+				"		 }\n" +
+				"	}\n" +
+				"	public static void main(String[] args){\n" +
+				"		Test test = new Test();\n" +
+				"		test.foo(null,null,null);\n" +
+				"	}\n" +
+				"}\n"},
+			"----------\n" + 
+			"1. ERROR in Test.java (at line 4)\n" + 
+			"	if (a!=null) {\n" + 
+			"	    ^\n" + 
+			"Null comparison always yields false: The variable a can only be null at this location\n" + 
+			"----------\n" + 
+			"2. ERROR in Test.java (at line 10)\n" + 
+			"	if (b!=null) {\n" + 
+			"	    ^\n" + 
+			"Redundant null check: The variable b cannot be null at this location\n" + 
+			"----------\n" + 
+			"3. ERROR in Test.java (at line 16)\n" + 
+			"	if (c.equals(a)) {\n" + 
+			"	    ^\n" + 
+			"Null pointer access: The variable c can only be null at this location\n" + 
+			"----------\n",
+			null, true, compilerOptions);
+	}
+}
+
 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=325755 
 // null analysis -- conditional expression
 public void testBug325755a() {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java
index bb651bb..686af6c 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java
@@ -177,6 +177,7 @@
 		TestCase.RUN_ONLY_ID = null;
 		all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_7, tests_1_7));
 	}
+	all.addTest(new TestSuite(Jsr14Test.class));
 	return all;
 }
 }