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

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java (+72 lines)
Lines 3944-3949 Link Here
3944
	}
3944
	}
3945
3945
3946
	/**
3946
	/**
3947
	 * Bug 96237: [javadoc] Inner types must be qualified
3948
	 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=96237"
3949
	 */
3950
	public void testBug96237() {
3951
		this.reportMissingJavadocTags = CompilerOptions.ERROR;
3952
		runNegativeTest(
3953
			new String[] {
3954
				"Test.java",
3955
				"/**\n" + 
3956
				" * @see Inner\n" + 
3957
				" * @see TestBug96237.Inner\n" + 
3958
				" */\n" + 
3959
				"public class Test {\n" + 
3960
				"	class Inner {\n" + 
3961
				"	}\n" + 
3962
				"}\n"
3963
			},
3964
			"???"
3965
		);
3966
	}
3967
	public void testBug96237a() {
3968
		this.reportMissingJavadocTags = CompilerOptions.ERROR;
3969
		runNegativeTest(
3970
			new String[] {
3971
				"Test.java",
3972
				"public class Test {\n" + 
3973
				"	/**\n" + 
3974
				"	 * @see Level2\n" + 
3975
				"	 * @see Inner.Level2\n" + 
3976
				"	 */\n" + 
3977
				"	class Inner {\n" + 
3978
				"		class Level2 {\n" + 
3979
				"		}\n" + 
3980
				"	}\n" + 
3981
				"}\n"
3982
			},
3983
			"???"
3984
		);
3985
	}
3986
	public void testBug96237b() {
3987
		this.reportMissingJavadocTags = CompilerOptions.ERROR;
3988
		runNegativeTest(
3989
			new String[] {
3990
				"Test.java",
3991
				"/**\n" + 
3992
				" * @see Inner\n" + 
3993
				" * @see TestBug96237.Inner\n" + 
3994
				" * @see Level3\n" + 
3995
				" * @see Level2.Level3\n" + 
3996
				" * @see Inner.Level2.Level3\n" + 
3997
				" * @see TestBug96237.Inner.Level2.Level3\n" + 
3998
				" */\n" + 
3999
				"public class Test {\n" + 
4000
				"	/**\n" + 
4001
				"	 * @see Level2\n" + 
4002
				"	 * @see Inner.Level2\n" + 
4003
				"	 * @see Level3\n" + 
4004
				"	 * @see Level2.Level3\n" + 
4005
				"	 */\n" + 
4006
				"	class Inner {\n" + 
4007
				"		class Level2 {\n" + 
4008
				"			class Level3 {\n" + 
4009
				"			}\n" + 
4010
				"		}\n" + 
4011
				"	}\n" + 
4012
				"}\n"
4013
			},
4014
			"???"
4015
		);
4016
	}
4017
4018
	/**
3947
	 * Bug 116464: [javadoc] Unicode tag name are not correctly parsed
4019
	 * Bug 116464: [javadoc] Unicode tag name are not correctly parsed
3948
	 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=116464"
4020
	 * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=116464"
3949
	 */
4021
	 */
(-)compiler/org/eclipse/jdt/internal/compiler/ast/Javadoc.java (-1 / +22 lines)
Lines 253-263 Link Here
253
			return;
253
			return;
254
		}
254
		}
255
255
256
257
		// Verify field references
258
		if (reference.resolvedType != null && reference.resolvedType.isValidBinding() && reference.resolvedType.isMemberType()) {
259
			if (reference instanceof JavadocSingleTypeReference) {
260
				int modifiers = ((MemberTypeBinding)reference.resolvedType).modifiers;
261
				scope.problemReporter().javadocMissingTypeMemberQualification(reference.sourceStart, reference.sourceEnd, modifiers);
262
			} else if (reference instanceof JavadocQualifiedTypeReference) {
263
				JavadocQualifiedTypeReference qualifiedTypeReference = (JavadocQualifiedTypeReference) reference;
264
				TypeBinding enclosingType = qualifiedTypeReference.resolvedType.enclosingType();
265
				char[] topLevelName = enclosingType.sourceName();
266
				while (enclosingType.isMemberType()) {
267
					enclosingType = enclosingType.enclosingType();
268
					topLevelName = enclosingType.sourceName();
269
				}
270
				if (!CharOperation.equals(topLevelName, qualifiedTypeReference.tokens[0])) {
271
					int modifiers = ((MemberTypeBinding)reference.resolvedType).modifiers;
272
					scope.problemReporter().javadocMissingTypeMemberQualification(reference.sourceStart, reference.sourceEnd, modifiers);
273
				}
274
			}
275
		}
276
256
		// If not 1.5 level, verification is finished
277
		// If not 1.5 level, verification is finished
257
		if (!verifyValues)  return;
278
		if (!verifyValues)  return;
258
279
259
		// Verify that message reference are not used for @value tags
280
		// Verify that message reference are not used for @value tags
260
		else if (reference instanceof JavadocMessageSend) {
281
		if (reference instanceof JavadocMessageSend) {
261
			JavadocMessageSend msgSend = (JavadocMessageSend) reference;
282
			JavadocMessageSend msgSend = (JavadocMessageSend) reference;
262
			int modifiers = msgSend.binding==null ? -1 : msgSend.binding.modifiers;
283
			int modifiers = msgSend.binding==null ? -1 : msgSend.binding.modifiers;
263
			if (msgSend.tagValue == JavadocTagConstants.TAG_VALUE_VALUE) { // cannot refer to method for @value tag
284
			if (msgSend.tagValue == JavadocTagConstants.TAG_VALUE_VALUE) { // cannot refer to method for @value tag
(-)compiler/org/eclipse/jdt/core/compiler/IProblem.java (-5 / +7 lines)
Lines 740-745 Link Here
740
	/*
740
	/*
741
	 * Javadoc comments
741
	 * Javadoc comments
742
	 */
742
	 */
743
	/** @since 3.2 */
744
	int JavadocMissingTypeMemberQualification = Javadoc + Internal + 466;
745
	/** @since 3.2 */
746
	int JavadocMissingIdentifier = Javadoc + Internal + 467;
747
	/** @since 3.2 */
748
	int JavadocNonStaticTypeFromStaticInvocation = Javadoc + Internal + 468;
749
743
	/** @since 3.0 */
750
	/** @since 3.0 */
744
	int JavadocUnexpectedTag = Javadoc + Internal + 470;
751
	int JavadocUnexpectedTag = Javadoc + Internal + 470;
745
	/** @since 3.0 */
752
	/** @since 3.0 */
Lines 856-866 Link Here
856
	/** @since 3.1 */
863
	/** @since 3.1 */
857
	int JavadocInvalidParamTagTypeParameter = Javadoc + Internal + 469;
864
	int JavadocInvalidParamTagTypeParameter = Javadoc + Internal + 469;
858
865
859
	/** @since 3.2 */
860
	int JavadocNonStaticTypeFromStaticInvocation = Javadoc + Internal + 468;
861
	/** @since 3.2 */
862
	int JavadocMissingIdentifier = Javadoc + Internal + 467;
863
864
	/**
866
	/**
865
	 * Generics
867
	 * Generics
866
	 */
868
	 */
(-)compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties (+1 lines)
Lines 360-365 Link Here
360
460 = Empty block should be documented
360
460 = Empty block should be documented
361
361
362
### DOC 
362
### DOC 
363
466 = Missing qualification for type member
363
467 = Missing identifier
364
467 = Missing identifier
364
468 = Cannot make a static reference to the non-static type variable {0}
365
468 = Cannot make a static reference to the non-static type variable {0}
365
469 = Invalid param tag type parameter name
366
469 = Invalid param tag type parameter name
(-)compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java (+6 lines)
Lines 560-565 Link Here
560
		case IProblem.JavadocDuplicateParamName:
560
		case IProblem.JavadocDuplicateParamName:
561
		case IProblem.JavadocMissingParamName:
561
		case IProblem.JavadocMissingParamName:
562
		case IProblem.JavadocMissingIdentifier:
562
		case IProblem.JavadocMissingIdentifier:
563
		case IProblem.JavadocMissingTypeMemberQualification:
563
		case IProblem.JavadocInvalidThrowsClassName:
564
		case IProblem.JavadocInvalidThrowsClassName:
564
		case IProblem.JavadocDuplicateThrowsClassName:
565
		case IProblem.JavadocDuplicateThrowsClassName:
565
		case IProblem.JavadocMissingThrowsClassName:
566
		case IProblem.JavadocMissingThrowsClassName:
Lines 1410-1415 Link Here
1410
		case IProblem.JavadocDuplicateParamName:
1411
		case IProblem.JavadocDuplicateParamName:
1411
		case IProblem.JavadocMissingParamName:
1412
		case IProblem.JavadocMissingParamName:
1412
		case IProblem.JavadocMissingIdentifier:
1413
		case IProblem.JavadocMissingIdentifier:
1414
		case IProblem.JavadocMissingTypeMemberQualification:
1413
		case IProblem.JavadocInvalidThrowsClassName:
1415
		case IProblem.JavadocInvalidThrowsClassName:
1414
		case IProblem.JavadocDuplicateThrowsClassName:
1416
		case IProblem.JavadocDuplicateThrowsClassName:
1415
		case IProblem.JavadocMissingThrowsClassName:
1417
		case IProblem.JavadocMissingThrowsClassName:
Lines 3845-3850 Link Here
3845
	if (javadocVisibility(this.options.reportInvalidJavadocTagsVisibility, modifiers))
3847
	if (javadocVisibility(this.options.reportInvalidJavadocTagsVisibility, modifiers))
3846
		this.handle(IProblem.JavadocMissingIdentifier, NoArgument, NoArgument, sourceStart, sourceEnd);
3848
		this.handle(IProblem.JavadocMissingIdentifier, NoArgument, NoArgument, sourceStart, sourceEnd);
3847
}
3849
}
3850
public void javadocMissingTypeMemberQualification(int sourceStart, int sourceEnd, int modifiers){
3851
	if (javadocVisibility(this.options.reportInvalidJavadocTagsVisibility, modifiers))
3852
		this.handle(IProblem.JavadocMissingTypeMemberQualification, NoArgument, NoArgument, sourceStart, sourceEnd);
3853
}
3848
public void javadocMissingParamName(int sourceStart, int sourceEnd, int modifiers){
3854
public void javadocMissingParamName(int sourceStart, int sourceEnd, int modifiers){
3849
	if (javadocVisibility(this.options.reportInvalidJavadocTagsVisibility, modifiers))
3855
	if (javadocVisibility(this.options.reportInvalidJavadocTagsVisibility, modifiers))
3850
		this.handle(IProblem.JavadocMissingParamName, NoArgument, NoArgument, sourceStart, sourceEnd);
3856
		this.handle(IProblem.JavadocMissingParamName, NoArgument, NoArgument, sourceStart, sourceEnd);

Return to bug 96237