diff --git a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex index 71d1a847c73..035d3caa59e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex +++ b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex @@ -76,7 +76,7 @@ CODE_FENCE_END=("```" | "~~~") return KDocTokens.LEADING_ASTERISK; } "@"{TAG_NAME} { - KDocKnownTag tag = KDocKnownTag.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos)); + KDocKnownTag tag = KDocKnownTag.Companion.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos)); yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING); return KDocTokens.TAG_NAME; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java index 6cba6f9fecd..f5c74023151 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 4/28/16 3:03 PM */ +/* The following code was generated by JFlex 1.4.3 on 4/28/16 4:31 PM */ package org.jetbrains.kotlin.kdoc.lexer; @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 4/28/16 3:03 PM from the specification file + * on 4/28/16 4:31 PM from the specification file * /Users/yole/jetbrains/kotlin/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex */ class _KDocLexer implements FlexLexer { @@ -583,31 +583,25 @@ class _KDocLexer implements FlexLexer { return KDocTokens.TEXT; } case 21: break; - case 13: - { KDocKnownTag tag = KDocKnownTag.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos)); - yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING); - return KDocTokens.TAG_NAME; - } - case 22: break; case 10: { yybegin(CODE_BLOCK_CONTENTS_BEGINNING); return KDocTokens.LEADING_ASTERISK; } - case 23: break; + case 22: break; case 1: { return TokenType.BAD_CHARACTER; } - case 24: break; + case 23: break; case 14: { yybegin(CONTENTS_BEGINNING); return KDocTokens.START; } - case 25: break; + case 24: break; case 2: { yybegin(CONTENTS); return KDocTokens.TEXT; } - case 26: break; + case 25: break; case 20: // lookahead expression with fixed base length zzMarkedPos = zzStartRead + 3; @@ -615,32 +609,32 @@ class _KDocLexer implements FlexLexer { yybegin(CONTENTS); return KDocTokens.TEXT; } - case 27: break; + case 26: break; case 19: { yybegin(CONTENTS); return KDocTokens.MARKDOWN_INLINE_LINK; } - case 28: break; + case 27: break; case 5: { yybegin(CONTENTS); return KDocTokens.TEXT; } - case 29: break; + case 28: break; case 12: { yybegin(CONTENTS); return KDocTokens.MARKDOWN_ESCAPED_CHAR; } - case 30: break; + case 29: break; case 16: { yybegin(TAG_TEXT_BEGINNING); return KDocTokens.MARKDOWN_LINK; } - case 31: break; + case 30: break; case 4: { yybegin(CONTENTS_BEGINNING); return KDocTokens.LEADING_ASTERISK; } - case 32: break; + case 31: break; case 9: { if (yytextContainLineBreaks()) { yybegin(CODE_BLOCK_LINE_BEGINNING); @@ -648,7 +642,7 @@ class _KDocLexer implements FlexLexer { } return KDocTokens.CODE_BLOCK_TEXT; } - case 33: break; + case 32: break; case 3: { if (yytextContainLineBreaks()) { yybegin(LINE_BEGINNING); @@ -658,28 +652,34 @@ class _KDocLexer implements FlexLexer { return KDocTokens.TEXT; // internal white space } } - case 34: break; + case 33: break; case 18: // lookahead expression with fixed lookahead length yypushback(1); { yybegin(CONTENTS); return KDocTokens.MARKDOWN_LINK; } - case 35: break; + case 34: break; case 17: { yybegin(CONTENTS); return KDocTokens.MARKDOWN_LINK; } - case 36: break; + case 35: break; case 11: { if (isLastToken()) return KDocTokens.END; else return KDocTokens.TEXT; } - case 37: break; + case 36: break; case 7: { yybegin(TAG_TEXT_BEGINNING); return KDocTokens.MARKDOWN_LINK; } + case 37: break; + case 13: + { KDocKnownTag tag = KDocKnownTag.Companion.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos)); + yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING); + return KDocTokens.TAG_NAME; + } case 38: break; case 6: { if (yytextContainLineBreaks()) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt index 4d5444d1937..01c70512b46 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.jetbrains.kotlin.kdoc.parser; +package org.jetbrains.kotlin.kdoc.parser -import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.util.text.StringUtil -public enum KDocKnownTag { +enum class KDocKnownTag private constructor(val isReferenceRequired: Boolean, val isSectionStart: Boolean) { AUTHOR(false, false), THROWS(true, false), EXCEPTION(true, false), @@ -31,31 +31,20 @@ public enum KDocKnownTag { SAMPLE(true, false), SUPPRESS(false, false); - private final boolean takesReference; - private final boolean startsSection; - KDocKnownTag(boolean takesReference, boolean startsSection) { - this.takesReference = takesReference; - this.startsSection = startsSection; - } + companion object { + fun findByTagName(tagName: CharSequence): KDocKnownTag? { + var tagName = tagName + if (StringUtil.startsWith(tagName, "@")) { + tagName = tagName.subSequence(1, tagName.length) + } + try { + return valueOf(tagName.toString().toUpperCase()) + } + catch (ignored: IllegalArgumentException) { + } - public boolean isReferenceRequired() { - return takesReference; - } - - public boolean isSectionStart() { - return startsSection; - } - - public static KDocKnownTag findByTagName(CharSequence tagName) { - if (StringUtil.startsWith(tagName, "@")) { - tagName = tagName.subSequence(1, tagName.length()); + return null } - try { - return valueOf(tagName.toString().toUpperCase()); - } - catch (IllegalArgumentException ignored) { - } - return null; } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocParser.java b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocParser.java index 50935459fed..112a98a42f6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocParser.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/parser/KDocParser.java @@ -59,7 +59,7 @@ public class KDocParser implements PsiParser { private static PsiBuilder.Marker parseTag(PsiBuilder builder, PsiBuilder.Marker currentSectionMarker) { String tagName = builder.getTokenText(); - KDocKnownTag knownTag = KDocKnownTag.findByTagName(tagName); + KDocKnownTag knownTag = KDocKnownTag.Companion.findByTagName(tagName); if (knownTag != null && knownTag.isSectionStart()) { currentSectionMarker.done(KDocElementTypes.KDOC_SECTION); currentSectionMarker = builder.mark(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocTag.kt b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocTag.kt index 44539ef8e04..0e410c2462a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocTag.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocTag.kt @@ -56,7 +56,7 @@ open class KDocTag(node: ASTNode) : KDocElementImpl(node) { val knownTag: KDocKnownTag? get() { - return if (name != null) KDocKnownTag.findByTagName(name) else null + return name?.let { KDocKnownTag.findByTagName(it) } } private fun hasSubject(contentChildren: List): Boolean {