Cleanup (formatting)

This commit is contained in:
Roman Shevchenko
2017-09-13 16:49:39 +03:00
parent 86592218c3
commit bcd078f78a
5 changed files with 76 additions and 83 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,8 +32,7 @@ public class JavaDocLexer extends MergingLexerAdapter {
}
private JavaDocLexer(DocCommentTokenTypes tokenTypes, boolean isJdk15Enabled) {
super(new AsteriskStripperLexer(new _JavaDocLexer(isJdk15Enabled, tokenTypes), tokenTypes),
tokenTypes.spaceCommentsTokenSet());
super(new AsteriskStripperLexer(new _JavaDocLexer(isJdk15Enabled, tokenTypes), tokenTypes), tokenTypes.spaceCommentsTokenSet());
}
private static class AsteriskStripperLexer extends LexerBase {
@@ -56,7 +55,7 @@ public class JavaDocLexer extends MergingLexerAdapter {
@Override
public final void start(@NotNull CharSequence buffer, int startOffset, int endOffset, int initialState) {
myBuffer = buffer;
myBufferIndex = startOffset;
myBufferIndex = startOffset;
myBufferEndOffset = endOffset;
myTokenType = null;
myTokenEndOffset = startOffset;
@@ -97,7 +96,6 @@ public class JavaDocLexer extends MergingLexerAdapter {
return myTokenEndOffset;
}
@Override
public final void advance() {
locateToken();
@@ -154,18 +152,20 @@ public class JavaDocLexer extends MergingLexerAdapter {
}
if (myBufferIndex < myTokenEndOffset) {
myTokenType = lf || state == _JavaDocLexer.PARAM_TAG_SPACE || state == _JavaDocLexer.TAG_DOC_SPACE || state == _JavaDocLexer.INLINE_TAG_NAME || state == _JavaDocLexer.DOC_TAG_VALUE_IN_PAREN
? myTokenTypes.space()
: myTokenTypes.commentData();
myTokenType = lf ||
state == _JavaDocLexer.PARAM_TAG_SPACE || state == _JavaDocLexer.TAG_DOC_SPACE ||
state == _JavaDocLexer.INLINE_TAG_NAME || state == _JavaDocLexer.DOC_TAG_VALUE_IN_PAREN
? myTokenTypes.space() : myTokenTypes.commentData();
return;
}
}
flexLocateToken();
}
private void flexLocateToken() {
//noinspection Duplicates
try {
myState = myFlex.yystate();
myFlex.goTo(myBufferIndex);
@@ -177,4 +177,4 @@ public class JavaDocLexer extends MergingLexerAdapter {
}
}
}
}
}
@@ -19,8 +19,8 @@ import com.intellij.psi.tree.IElementType;
}
public boolean checkAhead(char c) {
if (zzMarkedPos >= zzBuffer.length()) return false;
return zzBuffer.charAt(zzMarkedPos) == c;
if (zzMarkedPos >= zzBuffer.length()) return false;
return zzBuffer.charAt(zzMarkedPos) == c;
}
public void goTo(int offset) {
@@ -58,8 +58,8 @@ INLINE_TAG_IDENTIFIER=[^\ \t\f\n\r\}]+
<YYINITIAL> "/**" { yybegin(COMMENT_DATA_START); return myTokenTypes.commentStart(); }
<COMMENT_DATA_START> {WHITE_DOC_SPACE_CHAR}+ { return myTokenTypes.space(); }
<COMMENT_DATA> {WHITE_DOC_SPACE_NO_LR}+ { return myTokenTypes.commentData(); }
<COMMENT_DATA> [\n\r]+{WHITE_DOC_SPACE_CHAR}* { return myTokenTypes.space(); }
<COMMENT_DATA> {WHITE_DOC_SPACE_NO_LR}+ { return myTokenTypes.commentData(); }
<COMMENT_DATA> [\n\r]+{WHITE_DOC_SPACE_CHAR}* { return myTokenTypes.space(); }
<DOC_TAG_VALUE> {WHITE_DOC_SPACE_CHAR}+ { yybegin(COMMENT_DATA); return myTokenTypes.space(); }
<DOC_TAG_VALUE, DOC_TAG_VALUE_IN_PAREN> ({ALPHA}|[_0-9\."$"\[\]])+ { return myTokenTypes.tagValueToken(); }
@@ -70,7 +70,7 @@ INLINE_TAG_IDENTIFIER=[^\ \t\f\n\r\}]+
<DOC_TAG_VALUE_IN_PAREN> {WHITE_DOC_SPACE_CHAR}+ { return myTokenTypes.space(); }
<INLINE_TAG_NAME, COMMENT_DATA_START> "@param" { yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName(); }
<PARAM_TAG_SPACE> {WHITE_DOC_SPACE_CHAR}+ {yybegin(DOC_TAG_VALUE); return myTokenTypes.space();}
<PARAM_TAG_SPACE> {WHITE_DOC_SPACE_CHAR}+ {yybegin(DOC_TAG_VALUE); return myTokenTypes.space(); }
<DOC_TAG_VALUE> [\<] {
if (myJdk15Enabled) {
yybegin(DOC_TAG_VALUE_IN_LTGT);
@@ -90,11 +90,12 @@ INLINE_TAG_IDENTIFIER=[^\ \t\f\n\r\}]+
yybegin(INLINE_TAG_NAME);
return myTokenTypes.inlineTagStart();
}
else{
else {
yybegin(COMMENT_DATA);
return myTokenTypes.inlineTagStart();
}
}
<INLINE_TAG_NAME> "@code" { yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName(); }
<INLINE_TAG_NAME> "@literal" { yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName(); }
<INLINE_TAG_NAME> "@"{INLINE_TAG_IDENTIFIER} { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); }
@@ -102,19 +103,16 @@ INLINE_TAG_IDENTIFIER=[^\ \t\f\n\r\}]+
<COMMENT_DATA_START, COMMENT_DATA, DOC_TAG_VALUE> . { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); }
<CODE_TAG, CODE_TAG_SPACE> . { yybegin(CODE_TAG); return myTokenTypes.commentData(); }
<COMMENT_DATA_START> "@"{TAG_IDENTIFIER} { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); }
<COMMENT_DATA_START> "@"{TAG_IDENTIFIER} { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); }
<TAG_DOC_SPACE> {WHITE_DOC_SPACE_CHAR}+ {
<TAG_DOC_SPACE> {WHITE_DOC_SPACE_CHAR}+ {
if (checkAhead('<') || checkAhead('\"')) yybegin(COMMENT_DATA);
else if (checkAhead('\u007b') ) yybegin(COMMENT_DATA); // lbrace - there's a error in JLex when typing lbrace directly
else if (checkAhead('\u007b')) yybegin(COMMENT_DATA); // lbrace - there's a error in JLex when typing lbrace directly
else yybegin(DOC_TAG_VALUE);
return myTokenTypes.space();
}
<CODE_TAG, CODE_TAG_SPACE> {WHITE_DOC_SPACE_CHAR}+ {
yybegin(CODE_TAG);
return myTokenTypes.space();
}
<CODE_TAG, CODE_TAG_SPACE> {WHITE_DOC_SPACE_CHAR}+ { yybegin(CODE_TAG); return myTokenTypes.space(); }
"*"+"/" { return myTokenTypes.commentEnd(); }
[^] { return myTokenTypes.badCharacter(); }
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,6 @@ import com.intellij.psi.TokenType;
import com.intellij.psi.impl.source.tree.JavaDocElementType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -38,24 +37,24 @@ public class JavadocParser {
public static final TokenSet SKIP_TOKENS = TokenSet.create(JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS);
@NonNls private static final String SEE_TAG = "@see";
@NonNls private static final String LINK_TAG = "@link";
@NonNls private static final String LINK_PLAIN_TAG = "@linkplain";
@NonNls private static final String THROWS_TAG = "@throws";
@NonNls private static final String EXCEPTION_TAG = "@exception";
@NonNls private static final String PARAM_TAG = "@param";
@NonNls private static final String VALUE_TAG = "@value";
private static final String SEE_TAG = "@see";
private static final String LINK_TAG = "@link";
private static final String LINK_PLAIN_TAG = "@linkplain";
private static final String THROWS_TAG = "@throws";
private static final String EXCEPTION_TAG = "@exception";
private static final String PARAM_TAG = "@param";
private static final String VALUE_TAG = "@value";
private static final Key<Integer> BRACE_SCOPE_KEY = Key.create("Javadoc.Parser.Brace.Scope");
private static Key<Integer> BRACE_SCOPE_KEY = Key.create("Javadoc.Parser.Brace.Scope");
private JavadocParser() { }
public static void parseJavadocReference(@NotNull final PsiBuilder builder) {
public static void parseJavadocReference(@NotNull PsiBuilder builder) {
JavaParser.INSTANCE.getReferenceParser().parseJavaCodeReference(builder, true, true, false, false);
swallowTokens(builder);
}
public static void parseJavadocType(@NotNull final PsiBuilder builder) {
public static void parseJavadocType(@NotNull PsiBuilder builder) {
JavaParser.INSTANCE.getReferenceParser().parseType(builder, ReferenceParser.EAT_LAST_DOT | ReferenceParser.ELLIPSIS | ReferenceParser.WILDCARD);
swallowTokens(builder);
}
@@ -64,11 +63,11 @@ public class JavadocParser {
while (!builder.eof()) builder.advanceLexer();
}
public static void parseDocCommentText(@NotNull final PsiBuilder builder) {
public static void parseDocCommentText(@NotNull PsiBuilder builder) {
builder.enforceCommentTokens(SKIP_TOKENS);
while (!builder.eof()) {
final IElementType tokenType = getTokenType(builder);
IElementType tokenType = getTokenType(builder);
if (tokenType == JavaDocTokenType.DOC_TAG_NAME) {
parseTag(builder);
}
@@ -78,19 +77,19 @@ public class JavadocParser {
}
}
private static void parseTag(@NotNull final PsiBuilder builder) {
final String tagName = builder.getTokenText();
final PsiBuilder.Marker tag = builder.mark();
private static void parseTag(PsiBuilder builder) {
String tagName = builder.getTokenText();
PsiBuilder.Marker tag = builder.mark();
builder.advanceLexer();
while (true) {
final IElementType tokenType = getTokenType(builder);
IElementType tokenType = getTokenType(builder);
if (tokenType == null || tokenType == JavaDocTokenType.DOC_TAG_NAME || tokenType == JavaDocTokenType.DOC_COMMENT_END) break;
parseDataItem(builder, tagName, false);
}
tag.done(JavaDocElementType.DOC_TAG);
}
private static void parseDataItem(@NotNull final PsiBuilder builder, @Nullable final String tagName, final boolean isInline) {
private static void parseDataItem(PsiBuilder builder, @Nullable String tagName, boolean isInline) {
IElementType tokenType = getTokenType(builder);
if (tokenType == JavaDocTokenType.DOC_INLINE_TAG_START) {
int braceScope = getBraceScope(builder);
@@ -101,7 +100,7 @@ public class JavadocParser {
return;
}
final PsiBuilder.Marker tag = builder.mark();
PsiBuilder.Marker tag = builder.mark();
builder.advanceLexer();
tokenType = getTokenType(builder);
@@ -136,30 +135,24 @@ public class JavadocParser {
}
else if (TAG_VALUES_SET.contains(tokenType)) {
if (SEE_TAG.equals(tagName) && !isInline ||
LINK_TAG.equals(tagName) && isInline) {
LINK_TAG.equals(tagName) && isInline ||
JavaParserUtil.getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_4) && LINK_PLAIN_TAG.equals(tagName) && isInline) {
parseSeeTagValue(builder, false);
}
else if (!isInline && (THROWS_TAG.equals(tagName) || EXCEPTION_TAG.equals(tagName))) {
PsiBuilder.Marker tagValue = builder.mark();
builder.remapCurrentToken(JavaDocElementType.DOC_REFERENCE_HOLDER);
builder.advanceLexer();
tagValue.done(JavaDocElementType.DOC_TAG_VALUE_ELEMENT);
}
else if (!isInline && tagName != null && tagName.equals(PARAM_TAG)) {
parseSimpleTagValue(builder, true);
}
else if (JavaParserUtil.getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_5) && VALUE_TAG.equals(tagName) && isInline) {
parseSeeTagValue(builder, true);
}
else {
if (JavaParserUtil.getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_4) && LINK_PLAIN_TAG.equals(tagName) && isInline) {
parseSeeTagValue(builder, false);
}
else if (!isInline && (THROWS_TAG.equals(tagName) || EXCEPTION_TAG.equals(tagName))) {
final PsiBuilder.Marker tagValue = builder.mark();
builder.remapCurrentToken(JavaDocElementType.DOC_REFERENCE_HOLDER);
builder.advanceLexer();
tagValue.done(JavaDocElementType.DOC_TAG_VALUE_ELEMENT);
}
else if (!isInline && tagName != null && tagName.equals(PARAM_TAG)) {
parseSimpleTagValue(builder, true);
}
else {
if (JavaParserUtil.getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_5) && VALUE_TAG.equals(tagName) && isInline) {
parseSeeTagValue(builder, true);
}
else {
parseSimpleTagValue(builder, false);
}
}
parseSimpleTagValue(builder, false);
}
}
else {
@@ -167,13 +160,13 @@ public class JavadocParser {
}
}
private static void parseSeeTagValue(@NotNull final PsiBuilder builder, boolean allowBareFieldReference) {
final IElementType tokenType = getTokenType(builder);
private static void parseSeeTagValue(PsiBuilder builder, boolean allowBareFieldReference) {
IElementType tokenType = getTokenType(builder);
if (tokenType == JavaDocTokenType.DOC_TAG_VALUE_SHARP_TOKEN) {
parseMethodRef(builder, builder.mark());
}
else if (tokenType == JavaDocTokenType.DOC_TAG_VALUE_TOKEN) {
final PsiBuilder.Marker refStart = builder.mark();
PsiBuilder.Marker refStart = builder.mark();
builder.remapCurrentToken(JavaDocElementType.DOC_REFERENCE_HOLDER);
builder.advanceLexer();
@@ -190,13 +183,13 @@ public class JavadocParser {
}
}
else {
final PsiBuilder.Marker tagValue = builder.mark();
PsiBuilder.Marker tagValue = builder.mark();
builder.advanceLexer();
tagValue.done(JavaDocElementType.DOC_TAG_VALUE_ELEMENT);
}
}
private static void parseMethodRef(@NotNull final PsiBuilder builder, @NotNull final PsiBuilder.Marker refStart) {
private static void parseMethodRef(PsiBuilder builder, PsiBuilder.Marker refStart) {
if (getTokenType(builder) == JavaDocTokenType.DOC_TAG_VALUE_SHARP_TOKEN) {
builder.advanceLexer();
}
@@ -209,7 +202,7 @@ public class JavadocParser {
if (getTokenType(builder) == JavaDocTokenType.DOC_TAG_VALUE_LPAREN) {
builder.advanceLexer();
final PsiBuilder.Marker subValue = builder.mark();
PsiBuilder.Marker subValue = builder.mark();
IElementType tokenType;
while (TAG_VALUES_SET.contains(tokenType = getTokenType(builder))) {
@@ -239,8 +232,8 @@ public class JavadocParser {
refStart.done(JavaDocElementType.DOC_METHOD_OR_FIELD_REF);
}
private static void parseSimpleTagValue(@NotNull final PsiBuilder builder, final boolean parameter) {
final PsiBuilder.Marker tagValue = builder.mark();
private static void parseSimpleTagValue(PsiBuilder builder, boolean parameter) {
PsiBuilder.Marker tagValue = builder.mark();
while (TAG_VALUES_SET.contains(getTokenType(builder))) {
builder.advanceLexer();
}
@@ -248,7 +241,7 @@ public class JavadocParser {
}
@Nullable
private static IElementType getTokenType(@NotNull final PsiBuilder builder) {
private static IElementType getTokenType(PsiBuilder builder) {
IElementType tokenType;
while ((tokenType = builder.getTokenType()) == JavaDocTokenType.DOC_SPACE) {
builder.remapCurrentToken(TokenType.WHITE_SPACE);
@@ -257,19 +250,19 @@ public class JavadocParser {
return tokenType;
}
private static int getBraceScope(@NotNull final PsiBuilder builder) {
final Integer braceScope = builder.getUserDataUnprotected(BRACE_SCOPE_KEY);
private static int getBraceScope(PsiBuilder builder) {
Integer braceScope = builder.getUserDataUnprotected(BRACE_SCOPE_KEY);
return braceScope != null ? braceScope : 0;
}
private static void setBraceScope(@NotNull final PsiBuilder builder, final int braceScope) {
private static void setBraceScope(PsiBuilder builder, int braceScope) {
builder.putUserDataUnprotected(BRACE_SCOPE_KEY, braceScope);
}
private static void remapAndAdvance(@NotNull final PsiBuilder builder) {
private static void remapAndAdvance(PsiBuilder builder) {
if (INLINE_TAG_BORDERS_SET.contains(builder.getTokenType()) && getBraceScope(builder) != 1) {
builder.remapCurrentToken(JavaDocTokenType.DOC_COMMENT_DATA);
}
builder.advanceLexer();
}
}
}
@@ -1,6 +1,6 @@
class Test {
/**
* @throws java.lang.Exception
* @throws java.lang.Exception an exception
*/
public void foo() {}
public void foo() {}
}
@@ -21,7 +21,7 @@ PsiJavaFile:Exception0.java
PsiDocToken:DOC_COMMENT_START('/**')
PsiWhiteSpace('\n ')
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('*')
PsiDocToken:DOC_COMMENT_DATA(' ')
PsiDocToken:DOC_COMMENT_DATA(' ')
PsiDocTag:@throws
PsiDocToken:DOC_TAG_NAME('@throws')
PsiWhiteSpace(' ')
@@ -41,9 +41,11 @@ PsiJavaFile:Exception0.java
PsiIdentifier:Exception('Exception')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiDocToken:DOC_COMMENT_DATA('an exception')
PsiWhiteSpace('\n ')
PsiDocToken:DOC_COMMENT_END('*/')
PsiWhiteSpace('\n ')
PsiWhiteSpace('\n ')
PsiModifierList:public
PsiKeyword:public('public')
PsiTypeParameterList