diff options
author | Vikas Chandra | 2019-04-02 11:20:56 +0000 |
---|---|---|
committer | Vikas Chandra | 2019-04-04 06:27:29 +0000 |
commit | 5a2f7b1345e0151a199710967fa8aed8be0438d3 (patch) | |
tree | ea7688496f7137c1a3b96cd63f686ec96c26cb2f | |
parent | 5a59c8f2ff4303a5f93a473e385611d1a8ce6073 (diff) | |
download | eclipse.jdt.core-5a2f7b1345e0151a199710967fa8aed8be0438d3.tar.gz eclipse.jdt.core-5a2f7b1345e0151a199710967fa8aed8be0438d3.tar.xz eclipse.jdt.core-5a2f7b1345e0151a199710967fa8aed8be0438d3.zip |
Bug 540485 - [1.8][content assist] Add autocomplete support for
Java 8 Javadoc tags such as @implSpec.
Change-Id: Ie4573db49d6efbfbf336f8ef2e01db2dd2fba9de
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
3 files changed, 52 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java index ba60e7de32..9b78ee7553 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java @@ -169,11 +169,20 @@ protected void verifyAllTagsCompletion() { TAG_LINK, TAG_DOC_ROOT, }; + char[][] allTagsJava8 = { + // Block tags + TAG_AUTHOR, TAG_DEPRECATED, TAG_EXCEPTION, TAG_PARAM, TAG_RETURN, TAG_SEE, TAG_VERSION, TAG_CATEGORY, + TAG_SINCE, + TAG_SERIAL, TAG_SERIAL_DATA, TAG_SERIAL_FIELD , TAG_THROWS, TAG_API_NOTE, TAG_IMPL_SPEC, TAG_IMPL_NOTE, + // Inline tags + TAG_LINK, + TAG_DOC_ROOT + }; char[][] allTagsJava9Plus = { // Block tags TAG_AUTHOR, TAG_DEPRECATED, TAG_EXCEPTION, TAG_PARAM, TAG_RETURN, TAG_SEE, TAG_VERSION, TAG_CATEGORY, TAG_SINCE, - TAG_SERIAL, TAG_SERIAL_DATA, TAG_SERIAL_FIELD , TAG_THROWS, TAG_HIDDEN, TAG_USES, TAG_PROVIDES, + TAG_SERIAL, TAG_SERIAL_DATA, TAG_SERIAL_FIELD , TAG_THROWS, TAG_API_NOTE, TAG_IMPL_SPEC, TAG_IMPL_NOTE, TAG_HIDDEN, TAG_USES, TAG_PROVIDES, // Inline tags TAG_LINK, TAG_DOC_ROOT @@ -206,7 +215,7 @@ protected void verifyAllTagsCompletion() { TAG_CODE, TAG_LITERAL, TAG_INDEX, TAG_SUMMARY, TAG_SYSTEM_PROPERTY }; } - allTagsFinal = this.complianceLevel > ClassFileConstants.JDK1_8 ? allTagsJava9Plus : allTags; + allTagsFinal = this.complianceLevel > ClassFileConstants.JDK1_8 ? allTagsJava9Plus : this.complianceLevel == ClassFileConstants.JDK1_8 ? allTagsJava8 : allTags ; if (additionalTags != null) { int length = allTagsFinal.length; int add = additionalTags.length; diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java index cba26f476e..8663caba08 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java @@ -523,6 +523,9 @@ public class JavadocParser extends AbstractCommentParser { if (length == TAG_AUTHOR_LENGTH && CharOperation.equals(TAG_AUTHOR, tagName, 0, length)) { this.tagValue = TAG_AUTHOR_VALUE; this.tagWaitingForDescription = this.tagValue; + }else if (length == TAG_API_NOTE_LENGTH && CharOperation.equals(TAG_API_NOTE, tagName, 0, length)) { + this.tagValue = TAG_API_NOTE_VALUE; + this.tagWaitingForDescription = this.tagValue; } break; case 'c': @@ -594,6 +597,12 @@ public class JavadocParser extends AbstractCommentParser { } } this.tagValue = TAG_INHERITDOC_VALUE; + } else if (length == TAG_IMPL_SPEC_LENGTH && CharOperation.equals(TAG_IMPL_SPEC, tagName, 0, length)) { + this.tagValue = TAG_IMPL_SPEC_VALUE; + this.tagWaitingForDescription = this.tagValue; + } else if (length == TAG_IMPL_NOTE_LENGTH && CharOperation.equals(TAG_IMPL_NOTE, tagName, 0, length)) { + this.tagValue = TAG_IMPL_NOTE_VALUE; + this.tagWaitingForDescription = this.tagValue; } break; case 'l': diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java index 6382f2f68d..a0776e2eff 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java @@ -50,6 +50,9 @@ public interface JavadocTagConstants { public static final char[] TAG_HIDDEN = "hidden".toCharArray(); //$NON-NLS-1$ public static final char[] TAG_INDEX = "index".toCharArray(); //$NON-NLS-1$ public static final char[] TAG_SUMMARY = "summary".toCharArray(); //$NON-NLS-1$ + public static final char[] TAG_API_NOTE = "apiNote".toCharArray(); //$NON-NLS-1$ + public static final char[] TAG_IMPL_SPEC = "implSpec".toCharArray(); //$NON-NLS-1$ + public static final char[] TAG_IMPL_NOTE = "implNote".toCharArray(); //$NON-NLS-1$ // tags lengthes public static final int TAG_DEPRECATED_LENGTH = TAG_DEPRECATED.length; @@ -78,6 +81,9 @@ public interface JavadocTagConstants { public static final int TAG_HIDDEN_LENGTH = TAG_HIDDEN.length; public static final int TAG_INDEX_LENGTH = TAG_INDEX.length; public static final int TAG_SUMMARY_LENGTH = TAG_SUMMARY.length; + public static final int TAG_API_NOTE_LENGTH = TAG_API_NOTE.length; + public static final int TAG_IMPL_SPEC_LENGTH = TAG_IMPL_SPEC.length; + public static final int TAG_IMPL_NOTE_LENGTH = TAG_IMPL_NOTE.length; // tags value public static final int NO_TAG_VALUE = 0; @@ -107,6 +113,9 @@ public interface JavadocTagConstants { public static final int TAG_HIDDEN_VALUE = 23; public static final int TAG_INDEX_VALUE = 24; public static final int TAG_SUMMARY_VALUE = 25; + public static final int TAG_API_NOTE_VALUE = 26; + public static final int TAG_IMPL_SPEC_VALUE = 27; + public static final int TAG_IMPL_NOTE_VALUE = 28; public static final int TAG_OTHERS_VALUE = 100; // Tag names array public static final char[][] TAG_NAMES = { @@ -137,6 +146,9 @@ public interface JavadocTagConstants { TAG_HIDDEN, /* 24 */ TAG_INDEX, /* 25 */ TAG_SUMMARY, /* 26 */ + TAG_API_NOTE, /* 27 */ + TAG_IMPL_SPEC, /* 28 */ + TAG_IMPL_NOTE, /* 29 */ }; // tags expected positions @@ -174,7 +186,7 @@ public interface JavadocTagConstants { // since 1.7 {}, // since 1.8 - {}, + {TAG_API_NOTE, TAG_IMPL_SPEC, TAG_IMPL_NOTE}, // since 9 { TAG_HIDDEN, TAG_USES, TAG_PROVIDES }, // since 10 @@ -247,6 +259,9 @@ public interface JavadocTagConstants { TAG_TYPE_BLOCK, // TAG_USES_VALUE = 24; TAG_TYPE_INLINE, // TAG_INDEX_VALUE = 25; TAG_TYPE_INLINE, // TAG_SUMMARY_VALUE = 26; + TAG_TYPE_BLOCK, // TAG_API_NOTE = 27; + TAG_TYPE_BLOCK, // TAG_IMPL_SPEC = 28; + TAG_TYPE_BLOCK, // TAG_IMPL_NOTE = 29; }; /* * Tags usage @@ -266,6 +281,9 @@ public interface JavadocTagConstants { TAG_HIDDEN, TAG_INDEX, TAG_SUMMARY, + TAG_API_NOTE, + TAG_IMPL_SPEC, + TAG_IMPL_NOTE, }; public static final char[][] COMPILATION_UNIT_TAGS = {}; public static final char[][] CLASS_TAGS = { @@ -287,6 +305,9 @@ public interface JavadocTagConstants { TAG_HIDDEN, TAG_INDEX, TAG_SUMMARY, + TAG_API_NOTE, + TAG_IMPL_SPEC, + TAG_IMPL_NOTE, }; public static final char[][] FIELD_TAGS = { TAG_SEE, @@ -305,6 +326,9 @@ public interface JavadocTagConstants { TAG_INDEX, TAG_HIDDEN, TAG_SUMMARY, + TAG_API_NOTE, + TAG_IMPL_SPEC, + TAG_IMPL_NOTE, }; public static final char[][] METHOD_TAGS = { TAG_SEE, @@ -327,6 +351,9 @@ public interface JavadocTagConstants { TAG_HIDDEN, TAG_INDEX, TAG_SUMMARY, + TAG_API_NOTE, + TAG_IMPL_SPEC, + TAG_IMPL_NOTE, }; public static final char[][] MODULE_TAGS = { TAG_SEE, @@ -346,6 +373,9 @@ public interface JavadocTagConstants { TAG_PROVIDES, TAG_HIDDEN, TAG_INDEX, - TAG_SUMMARY + TAG_SUMMARY, + TAG_API_NOTE, + TAG_IMPL_SPEC, + TAG_IMPL_NOTE, }; } |