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

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java (-35 / +35 lines)
Lines 1664-1675 Link Here
1664
				"pack/package-info.java",
1664
				"pack/package-info.java",
1665
				"/**\n" +
1665
				"/**\n" +
1666
				" * Valid javadoc.\n" +
1666
				" * Valid javadoc.\n" +
1667
				" * @see Test\n" +
1667
				" * @see pack.Test\n" +
1668
				" * @see Unknown\n" +
1668
				" * @see Unknown\n" +
1669
				" * @see Test#foo()\n" +
1669
				" * @see pack.Test#foo()\n" +
1670
				" * @see Test#unknown()\n" +
1670
				" * @see pack.Test#unknown()\n" +
1671
				" * @see Test#field\n" +
1671
				" * @see pack.Test#field\n" +
1672
				" * @see Test#unknown\n" +
1672
				" * @see pack.Test#unknown\n" +
1673
				" * @param unexpected\n" +
1673
				" * @param unexpected\n" +
1674
				" * @throws unexpected\n" +
1674
				" * @throws unexpected\n" +
1675
				" * @return unexpected \n" +
1675
				" * @return unexpected \n" +
Lines 1687-1722 Link Here
1687
				"	public void foo() {}\n" +
1687
				"	public void foo() {}\n" +
1688
				"}\n"
1688
				"}\n"
1689
			},
1689
			},
1690
			"----------\n" +
1690
			"----------\n" + 
1691
			"1. ERROR in pack\\package-info.java (at line 4)\n" +
1691
			"1. ERROR in pack\\package-info.java (at line 4)\n" + 
1692
			"	* @see Unknown\n" +
1692
			"	* @see Unknown\n" + 
1693
			"	       ^^^^^^^\n" +
1693
			"	       ^^^^^^^\n" + 
1694
			"Javadoc: Unknown cannot be resolved to a type\n" +
1694
			"Javadoc: Unknown cannot be resolved to a type\n" + 
1695
			"----------\n" +
1695
			"----------\n" + 
1696
			"2. ERROR in pack\\package-info.java (at line 6)\n" +
1696
			"2. ERROR in pack\\package-info.java (at line 6)\n" + 
1697
			"	* @see Test#unknown()\n" +
1697
			"	* @see pack.Test#unknown()\n" + 
1698
			"	            ^^^^^^^\n" +
1698
			"	                 ^^^^^^^\n" + 
1699
			"Javadoc: The method unknown() is undefined for the type Test\n" +
1699
			"Javadoc: The method unknown() is undefined for the type Test\n" + 
1700
			"----------\n" +
1700
			"----------\n" + 
1701
			"3. ERROR in pack\\package-info.java (at line 8)\n" +
1701
			"3. ERROR in pack\\package-info.java (at line 8)\n" + 
1702
			"	* @see Test#unknown\n" +
1702
			"	* @see pack.Test#unknown\n" + 
1703
			"	            ^^^^^^^\n" +
1703
			"	                 ^^^^^^^\n" + 
1704
			"Javadoc: unknown cannot be resolved or is not a field\n" +
1704
			"Javadoc: unknown cannot be resolved or is not a field\n" + 
1705
			"----------\n" +
1705
			"----------\n" + 
1706
			"4. ERROR in pack\\package-info.java (at line 9)\n" +
1706
			"4. ERROR in pack\\package-info.java (at line 9)\n" + 
1707
			"	* @param unexpected\n" +
1707
			"	* @param unexpected\n" + 
1708
			"	   ^^^^^\n" +
1708
			"	   ^^^^^\n" + 
1709
			"Javadoc: Unexpected tag\n" +
1709
			"Javadoc: Unexpected tag\n" + 
1710
			"----------\n" +
1710
			"----------\n" + 
1711
			"5. ERROR in pack\\package-info.java (at line 10)\n" +
1711
			"5. ERROR in pack\\package-info.java (at line 10)\n" + 
1712
			"	* @throws unexpected\n" +
1712
			"	* @throws unexpected\n" + 
1713
			"	   ^^^^^^\n" +
1713
			"	   ^^^^^^\n" + 
1714
			"Javadoc: Unexpected tag\n" +
1714
			"Javadoc: Unexpected tag\n" + 
1715
			"----------\n" +
1715
			"----------\n" + 
1716
			"6. ERROR in pack\\package-info.java (at line 11)\n" +
1716
			"6. ERROR in pack\\package-info.java (at line 11)\n" + 
1717
			"	* @return unexpected \n" +
1717
			"	* @return unexpected \n" + 
1718
			"	   ^^^^^^\n" +
1718
			"	   ^^^^^^\n" + 
1719
			"Javadoc: Unexpected tag\n" +
1719
			"Javadoc: Unexpected tag\n" + 
1720
			"----------\n",
1720
			"----------\n",
1721
			JavacTestOptions.Excuse.EclipseWarningConfiguredAsError
1721
			JavacTestOptions.Excuse.EclipseWarningConfiguredAsError
1722
		);
1722
		);
(-)src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java (-104 / +54 lines)
Lines 1265-1271 Link Here
1265
 * @see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50695">50695</a>
1265
 * @see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50695">50695</a>
1266
 */
1266
 */
1267
public void testBug50695() {
1267
public void testBug50695() {
1268
	runNegativeTest(
1268
	runConformTest(
1269
		new String[] {
1269
		new String[] {
1270
			"X.java",
1270
			"X.java",
1271
			"public class X {\n" +
1271
			"public class X {\n" +
Lines 1275-1293 Link Here
1275
			"	 */\n" +
1275
			"	 */\n" +
1276
			"	void foo() {}\n" +
1276
			"	void foo() {}\n" +
1277
			"}\n"
1277
			"}\n"
1278
		 },
1278
		 });
1279
		"----------\n" + 
1280
		"1. ERROR in X.java (at line 3)\n" + 
1281
		"	* @see java\n" + 
1282
		"	       ^^^^\n" + 
1283
		"Javadoc: Invalid reference\n" + 
1284
		"----------\n" + 
1285
		"2. ERROR in X.java (at line 4)\n" + 
1286
		"	* @see java.util\n" + 
1287
		"	       ^^^^^^^^^\n" + 
1288
		"Javadoc: Invalid reference\n" + 
1289
		"----------\n"
1290
	);
1291
}
1279
}
1292
public void testBug50695b() {
1280
public void testBug50695b() {
1293
	runNegativeTest(
1281
	runNegativeTest(
Lines 7541-7636 Link Here
7541
}
7529
}
7542
7530
7543
/**
7531
/**
7544
 * @bug 211054: [javadoc] @see package reference should raise a warning except for the package declaration
7545
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=211054"
7546
 */
7547
public void testBug211054a() {
7548
	runNegativeTest(
7549
		new String[] {
7550
			"pkg/X.java",
7551
			"package pkg;\n" +
7552
			"\n" +
7553
			"public class X {\n" +
7554
			"	/**\n" +
7555
			"	 * @see java\n" +
7556
			"	 * @see java.lang\n" +
7557
			"	 * @see PKG\n" +
7558
			"	 * @see pkg\n" +
7559
			"	 */\n" +
7560
			"	public void foo() { \n" +
7561
			"	 \n" +
7562
			"	}\n" +
7563
			"}\n"
7564
		},
7565
		// warning - Tag @see: reference not found: java
7566
		// warning - Tag @see: reference not found: java.lang
7567
		// warning - Tag @see: reference not found: PKG
7568
		"----------\n" + 
7569
		"1. ERROR in pkg\\X.java (at line 5)\n" + 
7570
		"	* @see java\n" + 
7571
		"	       ^^^^\n" + 
7572
		"Javadoc: Invalid reference\n" + 
7573
		"----------\n" + 
7574
		"2. ERROR in pkg\\X.java (at line 6)\n" + 
7575
		"	* @see java.lang\n" + 
7576
		"	       ^^^^^^^^^\n" + 
7577
		"Javadoc: Invalid reference\n" + 
7578
		"----------\n" + 
7579
		"3. ERROR in pkg\\X.java (at line 7)\n" + 
7580
		"	* @see PKG\n" + 
7581
		"	       ^^^\n" + 
7582
		"Javadoc: PKG cannot be resolved to a type\n" + 
7583
		"----------\n"
7584
	);
7585
}
7586
public void testBug211054b() {
7587
	runNegativeTest(
7588
		new String[] {
7589
			"x/y/z/X.java",
7590
			"package x.y.z;\n" +
7591
			"\n" +
7592
			"public class X {\n" +
7593
			"	/**\n" +
7594
			"	 * @see java\n" +
7595
			"	 * @see java.lang\n" +
7596
			"	 * @see x\n" +
7597
			"	 * @see x.y\n" +
7598
			"	 * @see x.y.z\n" +
7599
			"	 */\n" +
7600
			"	public void foo() { \n" +
7601
			"	 \n" +
7602
			"	}\n" +
7603
			"}\n"
7604
		},
7605
		// warning - Tag @see: reference not found: java
7606
		// warning - Tag @see: reference not found: java.lang
7607
		// warning - Tag @see: reference not found: x
7608
		// warning - Tag @see: reference not found: x.y
7609
		"----------\n" + 
7610
		"1. ERROR in x\\y\\z\\X.java (at line 5)\n" + 
7611
		"	* @see java\n" + 
7612
		"	       ^^^^\n" + 
7613
		"Javadoc: Invalid reference\n" + 
7614
		"----------\n" + 
7615
		"2. ERROR in x\\y\\z\\X.java (at line 6)\n" + 
7616
		"	* @see java.lang\n" + 
7617
		"	       ^^^^^^^^^\n" + 
7618
		"Javadoc: Invalid reference\n" + 
7619
		"----------\n" + 
7620
		"3. ERROR in x\\y\\z\\X.java (at line 7)\n" + 
7621
		"	* @see x\n" + 
7622
		"	       ^\n" + 
7623
		"Javadoc: Invalid reference\n" + 
7624
		"----------\n" + 
7625
		"4. ERROR in x\\y\\z\\X.java (at line 8)\n" + 
7626
		"	* @see x.y\n" + 
7627
		"	       ^^^\n" + 
7628
		"Javadoc: Invalid reference\n" + 
7629
		"----------\n"
7630
	);
7631
}
7632
7633
/**
7634
 * @bug 222900: [Javadoc] Missing description is warned if valid description is on a new line
7532
 * @bug 222900: [Javadoc] Missing description is warned if valid description is on a new line
7635
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=222900"
7533
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=222900"
7636
 */
7534
 */
Lines 8637-8640 Link Here
8637
			"----------\n");
8535
			"----------\n");
8638
}
8536
}
8639
8537
8538
/**
8539
 * @bug 281609: [javadoc] "Javadoc: Invalid reference" warning for @link to Java package
8540
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=281609"
8541
 */
8542
public void testBug281609a() {
8543
	runNegativeTest(
8544
		new String[] {
8545
			"pkg/X.java",
8546
			"package pkg;\n" +
8547
			"\n" +
8548
			"public class X {\n" +
8549
			"	/**\n" +
8550
			"	 * @see java\n" +
8551
			"	 * @see java.lang\n" +
8552
			"	 * @see PKG\n" +
8553
			"	 * @see pkg\n" +
8554
			"	 */\n" +
8555
			"	public void foo() { \n" +
8556
			"	 \n" +
8557
			"	}\n" +
8558
			"}\n"
8559
		},
8560
		// warning - Tag @see: reference not found: PKG
8561
		"----------\n" + 
8562
		"1. ERROR in pkg\\X.java (at line 7)\n" + 
8563
		"	* @see PKG\n" + 
8564
		"	       ^^^\n" + 
8565
		"Javadoc: PKG cannot be resolved to a type\n" + 
8566
		"----------\n"
8567
	);
8568
}
8569
public void testBug281609b() {
8570
	runConformTest(
8571
		new String[] {
8572
			"x/y/z/X.java",
8573
			"package x.y.z;\n" +
8574
			"\n" +
8575
			"public class X {\n" +
8576
			"	/**\n" +
8577
			"	 * @see java\n" +
8578
			"	 * @see java.lang\n" +
8579
			"	 * @see x\n" +
8580
			"	 * @see x.y\n" +
8581
			"	 * @see x.y.z\n" +
8582
			"	 */\n" +
8583
			"	public void foo() { \n" +
8584
			"	 \n" +
8585
			"	}\n" +
8586
			"}\n"
8587
		});
8588
}
8589
8640
}
8590
}
(-)compiler/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.java (-5 / +1 lines)
Lines 50-60 Link Here
50
			Binding binding = scope.getTypeOrPackage(this.tokens);
50
			Binding binding = scope.getTypeOrPackage(this.tokens);
51
			if (binding instanceof PackageBinding) {
51
			if (binding instanceof PackageBinding) {
52
				this.packageBinding = (PackageBinding) binding;
52
				this.packageBinding = (PackageBinding) binding;
53
				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=211054
53
				// Valid package references are allowed in Javadoc (https://bugs.eclipse.org/bugs/show_bug.cgi?id=281609)
54
				// allow references to current package only. All other package references should be reported as invalid
55
				if (scope.compilationUnitScope().fPackage != this.packageBinding) {
56
					scope.problemReporter().javadocInvalidReference(this.sourceStart, this.sourceEnd);
57
				}
58
			} else {
54
			} else {
59
				reportInvalidType(scope);
55
				reportInvalidType(scope);
60
			}
56
			}
(-)compiler/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.java (-5 / +1 lines)
Lines 65-75 Link Here
65
			Binding binding = scope.getTypeOrPackage(tokens);
65
			Binding binding = scope.getTypeOrPackage(tokens);
66
			if (binding instanceof PackageBinding) {
66
			if (binding instanceof PackageBinding) {
67
				this.packageBinding = (PackageBinding) binding;
67
				this.packageBinding = (PackageBinding) binding;
68
				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=211054
68
				// Valid package references are allowed in Javadoc (https://bugs.eclipse.org/bugs/show_bug.cgi?id=281609)
69
				// allow references to current package only. All other package references should be reported as invalid
70
				if (scope.compilationUnitScope().fPackage != this.packageBinding) {
71
					scope.problemReporter().javadocInvalidReference(this.sourceStart, this.sourceEnd);
72
				}
73
			} else {
69
			} else {
74
				if (this.resolvedType.problemId() == ProblemReasons.NonStaticReferenceInStaticContext) {
70
				if (this.resolvedType.problemId() == ProblemReasons.NonStaticReferenceInStaticContext) {
75
					TypeBinding closestMatch = this.resolvedType.closestMatch();
71
					TypeBinding closestMatch = this.resolvedType.closestMatch();

Return to bug 281609