Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 36881 Details for
Bug 86769
[javadoc] Warn/Error for 'Missing javadoc comments' doesn't recognize private inner classes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch to fix this issue
v02.txt (text/plain), 41.48 KB, created by
Frederic Fusier
on 2006-03-24 06:42:20 EST
(
hide
)
Description:
Patch to fix this issue
Filename:
MIME Type:
Creator:
Frederic Fusier
Created:
2006-03-24 06:42:20 EST
Size:
41.48 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: compiler/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java,v >retrieving revision 1.87 >diff -u -r1.87 AbstractMethodDeclaration.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java 17 Feb 2006 16:09:56 -0000 1.87 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java 24 Mar 2006 11:35:52 -0000 >@@ -49,6 +49,8 @@ > public CompilationResult compilationResult; > > public boolean errorInSignature = false; >+ >+ int declaringClassVisibility; > > AbstractMethodDeclaration(CompilationResult compilationResult){ > this.compilationResult = compilationResult; >@@ -421,7 +423,25 @@ > return; > } > if (this.binding.declaringClass != null && !this.binding.declaringClass.isLocalType()) { >- this.scope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, this.binding.modifiers); >+ // Set javadoc visibility >+ int javadocVisibility = this.binding.modifiers & ExtraCompilerModifiers.AccVisibilityMASK; >+ switch (this.declaringClassVisibility) { >+ case ClassFileConstants.AccPrivate: >+ javadocVisibility = ClassFileConstants.AccPrivate; >+ break; >+ case ClassFileConstants.AccDefault: >+ if (javadocVisibility != ClassFileConstants.AccPrivate) { >+ javadocVisibility = ClassFileConstants.AccDefault; >+ } >+ break; >+ case ClassFileConstants.AccProtected: >+ if (javadocVisibility == ClassFileConstants.AccPublic) { >+ javadocVisibility = ClassFileConstants.AccProtected; >+ } >+ break; >+ } >+ int javadocModifiers = (this.binding.modifiers & ~ExtraCompilerModifiers.AccVisibilityMASK) | javadocVisibility; >+ this.scope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, javadocModifiers); > } > } > >Index: compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java,v >retrieving revision 1.76 >diff -u -r1.76 FieldDeclaration.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java 20 Feb 2006 14:03:05 -0000 1.76 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java 24 Mar 2006 11:35:52 -0000 >@@ -22,6 +22,7 @@ > public FieldBinding binding; > boolean hasBeenResolved = false; // TODO (philippe) should use a tagBit instead > public Javadoc javadoc; >+ int declaringClassVisibility; > > //allows to retrieve both the "type" part of the declaration (part1) > //and also the part that decribe the name and the init and optionally >@@ -253,16 +254,30 @@ > initializationScope.problemReporter().assignmentHasNoEffect(this, this.name); > } > } >+ // Set javadoc visibility >+ int javadocVisibility = this.binding.modifiers & ExtraCompilerModifiers.AccVisibilityMASK; >+ switch (this.declaringClassVisibility) { >+ case ClassFileConstants.AccPrivate: >+ javadocVisibility = ClassFileConstants.AccPrivate; >+ break; >+ case ClassFileConstants.AccDefault: >+ if (javadocVisibility != ClassFileConstants.AccPrivate) { >+ javadocVisibility = ClassFileConstants.AccDefault; >+ } >+ break; >+ case ClassFileConstants.AccProtected: >+ if (javadocVisibility == ClassFileConstants.AccPublic) { >+ javadocVisibility = ClassFileConstants.AccProtected; >+ } >+ break; >+ } > // Resolve Javadoc comment if one is present > if (this.javadoc != null) { >- /* >- if (classScope != null) { >- this.javadoc.resolve(classScope); >- } >- */ > this.javadoc.resolve(initializationScope); > } else if (this.binding != null && this.binding.declaringClass != null && !this.binding.declaringClass.isLocalType()) { >- initializationScope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, this.binding.modifiers); >+ int javadocModifiers = (this.binding.modifiers & ~ExtraCompilerModifiers.AccVisibilityMASK) | javadocVisibility; >+ initializationScope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, javadocModifiers); >+// initializationScope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, this.binding.modifiers); > } > } finally { > initializationScope.initializedField = previousField; >Index: compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java,v >retrieving revision 1.120 >diff -u -r1.120 TypeDeclaration.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java 21 Mar 2006 19:34:44 -0000 1.120 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java 24 Mar 2006 11:35:53 -0000 >@@ -52,7 +52,7 @@ > protected boolean hasBeenGenerated = false; > public CompilationResult compilationResult; > public MethodDeclaration[] missingAbstractMethods; >- public Javadoc javadoc; >+ public Javadoc javadoc; > > public QualifiedAllocationExpression allocation; // for anonymous only > public TypeDeclaration enclosingType; // for member types only >@@ -974,6 +974,29 @@ > this.typeParameters[i].resolve(this.scope); > } > } >+ // Set javadoc visibility >+ int visibility = sourceType.modifiers & ExtraCompilerModifiers.AccVisibilityMASK; >+ if (this.enclosingType != null) { >+ TypeDeclaration enclosing = this.enclosingType; >+ while (enclosing != null) { >+ switch (enclosing.modifiers & ExtraCompilerModifiers.AccVisibilityMASK) { >+ case ClassFileConstants.AccPrivate: >+ visibility = ClassFileConstants.AccPrivate; >+ break; >+ case ClassFileConstants.AccDefault: >+ if (visibility != ClassFileConstants.AccPrivate) { >+ visibility = ClassFileConstants.AccDefault; >+ } >+ break; >+ case ClassFileConstants.AccProtected: >+ if (visibility == ClassFileConstants.AccPublic) { >+ visibility = ClassFileConstants.AccProtected; >+ } >+ break; >+ } >+ enclosing = enclosing.enclosingType; >+ } >+ } > if (this.memberTypes != null) { > for (int i = 0, count = this.memberTypes.length; i < count; i++) { > this.memberTypes[i].resolve(this.scope); >@@ -1009,6 +1032,7 @@ > ((Initializer) field).lastVisibleFieldID = lastVisibleFieldID + 1; > break; > } >+ field.declaringClassVisibility = visibility; > field.resolve(field.isStatic() ? this.staticInitializerScope : this.initializerScope); > } > } >@@ -1047,7 +1071,9 @@ > } > if (this.methods != null) { > for (int i = 0, count = this.methods.length; i < count; i++) { >- this.methods[i].resolve(this.scope); >+ AbstractMethodDeclaration method = this.methods[i]; >+ method.declaringClassVisibility = visibility; >+ method.resolve(this.scope); > } > } > // Resolve javadoc >@@ -1056,7 +1082,9 @@ > this.javadoc.resolve(this.scope); > } > } else if (sourceType != null && !sourceType.isLocalType()) { >- this.scope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, sourceType.modifiers); >+// this.scope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, sourceType.modifiers); >+ int javadocModifiers = (this.binding.modifiers & ~ExtraCompilerModifiers.AccVisibilityMASK) | visibility; >+ this.scope.problemReporter().javadocMissing(this.sourceStart, this.sourceEnd, javadocModifiers); > } > > } catch (AbortType e) { >#P org.eclipse.jdt.core.tests.compiler >Index: src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java,v >retrieving revision 1.21 >diff -u -r1.21 JavadocBugsTest.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java 22 Mar 2006 16:25:57 -0000 1.21 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java 24 Mar 2006 11:35:56 -0000 >@@ -22,6 +22,7 @@ > String reportInvalidJavadoc = CompilerOptions.ERROR; > String reportMissingJavadocTags = CompilerOptions.ERROR; > String reportMissingJavadocComments = null; >+ String reportMissingJavadocCommentsVisibility = null; > String reportDeprecation = CompilerOptions.ERROR; > String reportJavadocDeprecation = null; > >@@ -55,6 +56,9 @@ > if (reportMissingJavadocComments != null) { > options.put(CompilerOptions.OPTION_ReportMissingJavadocComments, reportMissingJavadocComments); > options.put(CompilerOptions.OPTION_ReportMissingJavadocCommentsOverriding, CompilerOptions.ENABLED); >+ if (reportMissingJavadocCommentsVisibility != null) { >+ options.put(CompilerOptions.OPTION_ReportMissingJavadocCommentsVisibility, reportMissingJavadocCommentsVisibility); >+ } > } else { > options.put(CompilerOptions.OPTION_ReportMissingJavadocComments, reportInvalidJavadoc); > } >@@ -68,6 +72,7 @@ > options.put(CompilerOptions.OPTION_ReportSyntheticAccessEmulation, CompilerOptions.IGNORE); > options.put(CompilerOptions.OPTION_ReportDeprecation, reportDeprecation); > options.put(CompilerOptions.OPTION_ReportUnusedImport, CompilerOptions.ERROR); >+ options.put(CompilerOptions.OPTION_ReportUnusedPrivateMember, CompilerOptions.IGNORE); > return options; > } > /* (non-Javadoc) >@@ -79,6 +84,7 @@ > reportInvalidJavadoc = CompilerOptions.ERROR; > reportMissingJavadocTags = CompilerOptions.IGNORE; > reportMissingJavadocComments = CompilerOptions.IGNORE; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PUBLIC; > reportDeprecation = CompilerOptions.ERROR; > } > >@@ -3816,6 +3822,466 @@ > } > > /** >+ * Bug 86769: [javadoc] Unexpected not defined warning on constructor >+ * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=86769" >+ */ >+ public void testBug86769_Classes1() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PROTECTED; >+ runNegativeTest( >+ new String[] { >+ "A.java", >+ "/**\n" + >+ " * Test bug 86769 \n" + >+ " */\n" + >+ "public class A {\n" + >+ " private class Level1Private {\n" + >+ " private class Level2_PrivPriv {}\n" + >+ " class Level2_PrivDef {}\n" + >+ " protected class Level2_PrivPro {}\n" + >+ " public class Level2_PrivPub {}\n" + >+ " }\n" + >+ " class Level1Default{\n" + >+ " private class Level2_DefPriv {}\n" + >+ " class Level2_DefDef {}\n" + >+ " protected class Level2_DefPro {}\n" + >+ " public class Level2_DefPub {}\n" + >+ " }\n" + >+ " protected class Level1Protected {\n" + >+ " private class Level2_ProtPriv {}\n" + >+ " class Level2_ProDef {}\n" + >+ " protected class Level2_ProPro {}\n" + >+ " public class Level2_ProPub {} \n" + >+ " }\n" + >+ " public class Level1Public {\n" + >+ " private class Level2_PubPriv {}\n" + >+ " class Level2_PubDef {}\n" + >+ " protected class Level2_PubPro {}\n" + >+ " public class Level2_PubPub {}\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in A.java (at line 17)\n" + >+ " protected class Level1Protected {\n" + >+ " ^^^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "2. ERROR in A.java (at line 20)\n" + >+ " protected class Level2_ProPro {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "3. ERROR in A.java (at line 21)\n" + >+ " public class Level2_ProPub {} \n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "4. ERROR in A.java (at line 23)\n" + >+ " public class Level1Public {\n" + >+ " ^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "5. ERROR in A.java (at line 26)\n" + >+ " protected class Level2_PubPro {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "6. ERROR in A.java (at line 27)\n" + >+ " public class Level2_PubPub {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" >+ ); >+ } >+ public void testBug86769_Classes2() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.DEFAULT; >+ runNegativeTest( >+ new String[] { >+ "B.java", >+ "/**\n" + >+ " * Test bug 86769\n" + >+ " */\n" + >+ "public class B {\n" + >+ " class Level0_Default {\n" + >+ " private class Level1Private {\n" + >+ " private class Level2_PrivPriv {}\n" + >+ " class Level2_PrivDef {}\n" + >+ " protected class Level2_PrivPro {}\n" + >+ " public class Level2_PrivPub {}\n" + >+ " }\n" + >+ " }\n" + >+ " public class Level0_Public {\n" + >+ " class Level1Default{\n" + >+ " private class Level2_DefPriv {}\n" + >+ " class Level2_DefDef {}\n" + >+ " protected class Level2_DefPro {}\n" + >+ " public class Level2_DefPub {}\n" + >+ " }\n" + >+ " }\n" + >+ " protected class Level0_Protected {\n" + >+ " protected class Level1Protected {\n" + >+ " private class Level2_ProtPriv {}\n" + >+ " class Level2_ProDef {}\n" + >+ " protected class Level2_ProPro {}\n" + >+ " public class Level2_ProPub {} \n" + >+ " }\n" + >+ " }\n" + >+ " private class Level0_Private {\n" + >+ " public class Level1Public {\n" + >+ " private class Level2_PubPriv {}\n" + >+ " class Level2_PubDef {}\n" + >+ " protected class Level2_PubPro {}\n" + >+ " public class Level2_PubPub {}\n" + >+ " }\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in B.java (at line 5)\n" + >+ " class Level0_Default {\n" + >+ " ^^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "2. ERROR in B.java (at line 13)\n" + >+ " public class Level0_Public {\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "3. ERROR in B.java (at line 14)\n" + >+ " class Level1Default{\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "4. ERROR in B.java (at line 16)\n" + >+ " class Level2_DefDef {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "5. ERROR in B.java (at line 17)\n" + >+ " protected class Level2_DefPro {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "6. ERROR in B.java (at line 18)\n" + >+ " public class Level2_DefPub {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "7. ERROR in B.java (at line 21)\n" + >+ " protected class Level0_Protected {\n" + >+ " ^^^^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "8. ERROR in B.java (at line 22)\n" + >+ " protected class Level1Protected {\n" + >+ " ^^^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "9. ERROR in B.java (at line 24)\n" + >+ " class Level2_ProDef {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for default declaration\n" + >+ "----------\n" + >+ "10. ERROR in B.java (at line 25)\n" + >+ " protected class Level2_ProPro {}\n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" + >+ "11. ERROR in B.java (at line 26)\n" + >+ " public class Level2_ProPub {} \n" + >+ " ^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for protected declaration\n" + >+ "----------\n" >+ ); >+ } >+ public void testBug86769_Field1() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PUBLIC; >+ runNegativeTest( >+ new String[] { >+ "A.java", >+ "/**\n" + >+ " * Test bug 86769\n" + >+ " */\n" + >+ "public class A {\n" + >+ " private class InnerPrivate {\n" + >+ " private int pri_pri;\n" + >+ " int pri_def;\n" + >+ " protected int pri_pro;\n" + >+ " public int pri_pub;\n" + >+ " }\n" + >+ " class InnerDefault{\n" + >+ " private int def_pri;\n" + >+ " int def_def;\n" + >+ " protected int def_pro;\n" + >+ " public int def_pub;\n" + >+ " }\n" + >+ " protected class InnerProtected {\n" + >+ " private int pro_pri;\n" + >+ " int pro_def;\n" + >+ " protected int pro_pro;\n" + >+ " public int pro_pub; \n" + >+ " }\n" + >+ " public class InnerPublic {\n" + >+ " private int pub_pri;\n" + >+ " int pub_def;\n" + >+ " protected int pub_pro;\n" + >+ " public int pub_pub;\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in A.java (at line 23)\n" + >+ " public class InnerPublic {\n" + >+ " ^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "2. ERROR in A.java (at line 27)\n" + >+ " public int pub_pub;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" >+ ); >+ } >+ public void testBug86769_Fields2() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PRIVATE; >+ runNegativeTest( >+ new String[] { >+ "B.java", >+ "/**\n" + >+ " * Test bug 86769\n" + >+ " */\n" + >+ "public class B {\n" + >+ " private class Level1 {\n" + >+ " private class InnerPrivate {\n" + >+ " private int pri_pri;\n" + >+ " int pri_def;\n" + >+ " protected int pri_pro;\n" + >+ " public int pri_pub;\n" + >+ " }\n" + >+ " class InnerDefault{\n" + >+ " private int def_pri;\n" + >+ " int def_def;\n" + >+ " protected int def_pro;\n" + >+ " public int def_pub;\n" + >+ " }\n" + >+ " protected class InnerProtected {\n" + >+ " private int pro_pri;\n" + >+ " int pro_def;\n" + >+ " protected int pro_pro;\n" + >+ " public int pro_pub; \n" + >+ " }\n" + >+ " public class InnerPublic {\n" + >+ " private int pub_pri;\n" + >+ " int pub_def;\n" + >+ " protected int pub_pro;\n" + >+ " public int pub_pub;\n" + >+ " }\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in B.java (at line 5)\n" + >+ " private class Level1 {\n" + >+ " ^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "2. ERROR in B.java (at line 6)\n" + >+ " private class InnerPrivate {\n" + >+ " ^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "3. ERROR in B.java (at line 7)\n" + >+ " private int pri_pri;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "4. ERROR in B.java (at line 8)\n" + >+ " int pri_def;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "5. ERROR in B.java (at line 9)\n" + >+ " protected int pri_pro;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "6. ERROR in B.java (at line 10)\n" + >+ " public int pri_pub;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "7. ERROR in B.java (at line 12)\n" + >+ " class InnerDefault{\n" + >+ " ^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "8. ERROR in B.java (at line 13)\n" + >+ " private int def_pri;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "9. ERROR in B.java (at line 14)\n" + >+ " int def_def;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "10. ERROR in B.java (at line 15)\n" + >+ " protected int def_pro;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "11. ERROR in B.java (at line 16)\n" + >+ " public int def_pub;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "12. ERROR in B.java (at line 18)\n" + >+ " protected class InnerProtected {\n" + >+ " ^^^^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "13. ERROR in B.java (at line 19)\n" + >+ " private int pro_pri;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "14. ERROR in B.java (at line 20)\n" + >+ " int pro_def;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "15. ERROR in B.java (at line 21)\n" + >+ " protected int pro_pro;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "16. ERROR in B.java (at line 22)\n" + >+ " public int pro_pub; \n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "17. ERROR in B.java (at line 24)\n" + >+ " public class InnerPublic {\n" + >+ " ^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "18. ERROR in B.java (at line 25)\n" + >+ " private int pub_pri;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "19. ERROR in B.java (at line 26)\n" + >+ " int pub_def;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "20. ERROR in B.java (at line 27)\n" + >+ " protected int pub_pro;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" + >+ "21. ERROR in B.java (at line 28)\n" + >+ " public int pub_pub;\n" + >+ " ^^^^^^^\n" + >+ "Javadoc: Missing comment for private declaration\n" + >+ "----------\n" >+ ); >+ } >+ public void testBug86769_Metthods1() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PUBLIC; >+ runNegativeTest( >+ new String[] { >+ "A.java", >+ "/**\n" + >+ " * Test bug 86769\n" + >+ " */\n" + >+ "public class A {\n" + >+ " private class InnerPrivate {\n" + >+ " private void pri_pri() {}\n" + >+ " void pri_def() {}\n" + >+ " protected void pri_pro() {}\n" + >+ " public void pri_pub() {}\n" + >+ " }\n" + >+ " class InnerDefault{\n" + >+ " private void def_pri() {}\n" + >+ " void def_def() {}\n" + >+ " protected void def_pro() {}\n" + >+ " public void def_pub() {}\n" + >+ " }\n" + >+ " protected class InnerProtected {\n" + >+ " private void pro_pri() {}\n" + >+ " void pro_def() {}\n" + >+ " protected void pro_pro() {}\n" + >+ " public void pro_pub() {} \n" + >+ " }\n" + >+ " public class InnerPublic {\n" + >+ " private void pub_pri() {}\n" + >+ " void pub_def() {}\n" + >+ " protected void pub_pro() {}\n" + >+ " public void pub_pub() {}\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in A.java (at line 23)\n" + >+ " public class InnerPublic {\n" + >+ " ^^^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "2. ERROR in A.java (at line 27)\n" + >+ " public void pub_pub() {}\n" + >+ " ^^^^^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" >+ ); >+ } >+ public void testBug86769_Methods2() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ reportMissingJavadocCommentsVisibility = CompilerOptions.PROTECTED; >+ runConformTest( >+ new String[] { >+ "B.java", >+ "/**\n" + >+ " * Test bug 86769\n" + >+ " */\n" + >+ "public class B {\n" + >+ " private class Level1 {\n" + >+ " private class InnerPrivate {\n" + >+ " private void pri_pri() {}\n" + >+ " void pri_def() {}\n" + >+ " protected void pri_pro() {}\n" + >+ " public void pri_pub() {}\n" + >+ " }\n" + >+ " class InnerDefault{\n" + >+ " private void def_pri() {}\n" + >+ " void def_def() {}\n" + >+ " protected void def_pro() {}\n" + >+ " public void def_pub() {}\n" + >+ " }\n" + >+ " protected class InnerProtected {\n" + >+ " private void pro_pri() {}\n" + >+ " void pro_def() {}\n" + >+ " protected void pro_pro() {}\n" + >+ " public void pro_pub() {} \n" + >+ " }\n" + >+ " public class InnerPublic {\n" + >+ " private void pub_pri() {}\n" + >+ " void pub_def() {}\n" + >+ " protected void pub_pro() {}\n" + >+ " public void pub_pub() {}\n" + >+ " }\n" + >+ " }\n" + >+ "}\n" >+ } >+ ); >+ } >+ >+ /** > * Bug 87404: [javadoc] Unexpected not defined warning on constructor > * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=87404" > */ >Index: src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java,v >retrieving revision 1.22 >diff -u -r1.22 JavadocTest_1_4.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java 20 Mar 2006 17:21:30 -0000 1.22 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java 24 Mar 2006 11:35:59 -0000 >@@ -2551,6 +2551,165 @@ > } > > /** >+ * Bug 86769: [javadoc] Unexpected not defined warning on constructor >+ * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=86769" >+ */ >+ public void testBug86769() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ runNegativeTest( >+ new String[] { >+ "E.java", >+ "public enum E {\n" + >+ " A,\n" + >+ " DC{\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " E() {}\n" + >+ " public void foo() {}\n" + >+ " private enum Epriv {\n" + >+ " Apriv,\n" + >+ " Cpriv {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epriv() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " enum Edef {\n" + >+ " Adef,\n" + >+ " Cdef {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Edef() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " protected enum Epro {\n" + >+ " Apro,\n" + >+ " Cpro {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epro() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " public enum Epub {\n" + >+ " Apub,\n" + >+ " Cpub {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epub() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in E.java (at line 1)\n" + >+ " public enum E {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "2. ERROR in E.java (at line 1)\n" + >+ " public enum E {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "3. ERROR in E.java (at line 5)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "4. ERROR in E.java (at line 5)\n" + >+ " };\n" + >+ " E() {}\n" + >+ " public void foo() {}\n" + >+ " private enum Epriv {\n" + >+ " Apriv,\n" + >+ " Cpriv {\n" + >+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + >+ "Syntax error on token(s), misplaced construct(s)\n" + >+ "----------\n" + >+ "5. WARNING in E.java (at line 8)\n" + >+ " private enum Epriv {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "6. ERROR in E.java (at line 8)\n" + >+ " private enum Epriv {\n" + >+ " ^^^^^\n" + >+ "Syntax error on token \"Epriv\", = expected after this token\n" + >+ "----------\n" + >+ "7. ERROR in E.java (at line 12)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "8. WARNING in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "9. ERROR in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "10. ERROR in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "11. ERROR in E.java (at line 20)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "12. ERROR in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "13. WARNING in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "14. ERROR in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "15. ERROR in E.java (at line 28)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "16. ERROR in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "17. WARNING in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "18. ERROR in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "19. ERROR in E.java (at line 36)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "20. ERROR in E.java (at line 40)\n" + >+ " }\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" >+ ); >+ } >+ >+ /** > * Bug 95286: [1.5][javadoc] package-info.java incorrectly flags "Missing comment for public declaration" > * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=95286" > */ >Index: src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java,v >retrieving revision 1.19 >diff -u -r1.19 JavadocTest_1_3.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java 20 Mar 2006 17:21:31 -0000 1.19 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java 24 Mar 2006 11:35:57 -0000 >@@ -2511,6 +2511,165 @@ > } > > /** >+ * Bug 86769: [javadoc] Unexpected not defined warning on constructor >+ * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=86769" >+ */ >+ public void testBug86769() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ runNegativeTest( >+ new String[] { >+ "E.java", >+ "public enum E {\n" + >+ " A,\n" + >+ " DC{\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " E() {}\n" + >+ " public void foo() {}\n" + >+ " private enum Epriv {\n" + >+ " Apriv,\n" + >+ " Cpriv {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epriv() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " enum Edef {\n" + >+ " Adef,\n" + >+ " Cdef {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Edef() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " protected enum Epro {\n" + >+ " Apro,\n" + >+ " Cpro {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epro() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " public enum Epub {\n" + >+ " Apub,\n" + >+ " Cpub {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epub() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in E.java (at line 1)\n" + >+ " public enum E {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "2. ERROR in E.java (at line 1)\n" + >+ " public enum E {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "3. ERROR in E.java (at line 5)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "4. ERROR in E.java (at line 5)\n" + >+ " };\n" + >+ " E() {}\n" + >+ " public void foo() {}\n" + >+ " private enum Epriv {\n" + >+ " Apriv,\n" + >+ " Cpriv {\n" + >+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + >+ "Syntax error on token(s), misplaced construct(s)\n" + >+ "----------\n" + >+ "5. WARNING in E.java (at line 8)\n" + >+ " private enum Epriv {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "6. ERROR in E.java (at line 8)\n" + >+ " private enum Epriv {\n" + >+ " ^^^^^\n" + >+ "Syntax error on token \"Epriv\", = expected after this token\n" + >+ "----------\n" + >+ "7. ERROR in E.java (at line 12)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "8. WARNING in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "9. ERROR in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "10. ERROR in E.java (at line 16)\n" + >+ " enum Edef {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "11. ERROR in E.java (at line 20)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "12. ERROR in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "13. WARNING in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "14. ERROR in E.java (at line 24)\n" + >+ " protected enum Epro {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "15. ERROR in E.java (at line 28)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "16. ERROR in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^^^^\n" + >+ "Syntax error on token \"enum\", interface expected\n" + >+ "----------\n" + >+ "17. WARNING in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^^^^\n" + >+ "\'enum\' should not be used as an identifier, since it is a reserved keyword from source level 5.0 on\n" + >+ "----------\n" + >+ "18. ERROR in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^\n" + >+ "Syntax error on token \"{\", extends expected\n" + >+ "----------\n" + >+ "19. ERROR in E.java (at line 36)\n" + >+ " };\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" + >+ "20. ERROR in E.java (at line 40)\n" + >+ " }\n" + >+ " ^\n" + >+ "Syntax error on token \"}\", delete this token\n" + >+ "----------\n" >+ ); >+ } >+ >+ /** > * Bug 83804: [1.5][javadoc] Missing Javadoc node for package declaration > * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=83804" > */ >Index: src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java,v >retrieving revision 1.24 >diff -u -r1.24 JavadocTest_1_5.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java 3 Mar 2006 13:59:54 -0000 1.24 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java 24 Mar 2006 11:36:00 -0000 >@@ -1784,6 +1784,100 @@ > } > > /** >+ * Bug 86769: [javadoc] Unexpected not defined warning on constructor >+ * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=86769" >+ */ >+ public void testBug86769() { >+ reportMissingJavadocComments = CompilerOptions.ERROR; >+ runNegativeTest( >+ new String[] { >+ "E.java", >+ "public enum E {\n" + >+ " A,\n" + >+ " DC{\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " E() {}\n" + >+ " public void foo() {}\n" + >+ " private enum Epriv {\n" + >+ " Apriv,\n" + >+ " Cpriv {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epriv() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " enum Edef {\n" + >+ " Adef,\n" + >+ " Cdef {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Edef() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " protected enum Epro {\n" + >+ " Apro,\n" + >+ " Cpro {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epro() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ " public enum Epub {\n" + >+ " Apub,\n" + >+ " Cpub {\n" + >+ " public void foo() {}\n" + >+ " };\n" + >+ " Epub() {}\n" + >+ " public void foo() {}\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. ERROR in E.java (at line 1)\n" + >+ " public enum E {\n" + >+ " ^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "2. ERROR in E.java (at line 2)\n" + >+ " A,\n" + >+ " ^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "3. ERROR in E.java (at line 3)\n" + >+ " DC{\n" + >+ " ^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "4. ERROR in E.java (at line 7)\n" + >+ " public void foo() {}\n" + >+ " ^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "5. ERROR in E.java (at line 32)\n" + >+ " public enum Epub {\n" + >+ " ^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "6. ERROR in E.java (at line 33)\n" + >+ " Apub,\n" + >+ " ^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "7. ERROR in E.java (at line 34)\n" + >+ " Cpub {\n" + >+ " ^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" + >+ "8. ERROR in E.java (at line 38)\n" + >+ " public void foo() {}\n" + >+ " ^^^^^\n" + >+ "Javadoc: Missing comment for public declaration\n" + >+ "----------\n" >+ ); >+ } >+ >+ /** > * Bug 95286: [1.5][javadoc] package-info.java incorrectly flags "Missing comment for public declaration" > * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=95286" > */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 86769
: 36881 |
77448
|
77452