Skip to content

Commit 35d4f20

Browse files
committed
解决一些不正确的代码格式错误提示
1 parent 6b8b0f7 commit 35d4f20

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

AegisCodeCheckPlugin.zip

9.27 KB
Binary file not shown.

src/com/wuhao/code/check/inspection/visitor/JavaOrKotlinCodeFormatVisitor.kt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
6868

6969
private fun needSpaceBothBeforeAndAfter(element: PsiElement): Boolean {
7070
if (element.language is KotlinLanguage) {
71-
return (element is LeafPsiElement
71+
return ((element is LeafPsiElement
7272
&& element.parent !is KtValueArgument
7373
&& element.parent !is KtImportDirective
7474
&& (element.parent !is KtOperationReferenceExpression
@@ -77,7 +77,10 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
7777
&& element.parent !is KtTypeParameterList
7878
&& ((element.parent !is KtWhenEntry && element.elementType == ELSE_KEYWORD)
7979
|| element.elementType in shouldHaveSpaceBothBeforeAndAfterElementTypes))
80-
&& !(element.elementType == MUL && element.parent is KtTypeProjection)
80+
&& !(element.elementType == MUL && element.parent is KtTypeProjection))
81+
|| (element is KtOperationReferenceExpression &&
82+
element.firstChild is LeafPsiElement
83+
&& (element.firstChild as LeafPsiElement).elementType in shouldHaveSpaceBothBeforeAndAfterElementTypes)
8184
} else {
8285
return element is PsiJavaToken
8386
&& element.parent !is PsiReferenceParameterList
@@ -90,7 +93,16 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
9093
}
9194

9295
private fun onlyNeedSpaceBefore(element: PsiElement): Boolean {
93-
return element is KtCatchClause
96+
return if (element.language is KotlinLanguage) {
97+
element is PsiJavaToken
98+
&& ((element.tokenType == ElementType.MINUS && element.parent is
99+
PsiPrefixExpression) || (element.tokenType == CATCH_KEYWORD
100+
&& element.parent is KtCatchClause))
101+
} else {
102+
false
103+
}
104+
105+
94106
}
95107

96108
private fun onlyNeedSpaceAfter(element: PsiElement): Boolean {
@@ -157,13 +169,13 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
157169
val shouldHaveSpaceBothBeforeAndAfterElementTypes = listOf(
158170
PLUSPLUS, MINUSMINUS, MUL, PLUS, MINUS, DIV, PERC,
159171
GT, LT, LTEQ, GTEQ, EQEQEQ, ARROW, DOUBLE_ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ,
160-
EXCLEXCL, ANDAND, OROR, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS)
172+
ANDAND, OROR, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS)
161173
val shouldHaveSpaceBothBeforeAndAfterKeywords = shouldHaveSpaceBothBeforeAndAfterElementTypes
162-
.map { it.value } + listOf("else")
174+
.map { it.value } + listOf("else", "catch")
163175
val shouldHaveSpaceBothBeforeAndAfterTokens = listOf(">", "<", "=", ">=", "<=", "!=", "&&", "||", "&", "|", "==",
164-
"+", "-", "*", "/", "%", "+=", "-=", "/=", "*=", ">>", "<<", "<>")
176+
"+", "-", "*", "/", "%", "+=", "-=", "/=", "*=", ">>", "<<", "<>") + shouldHaveSpaceBothBeforeAndAfterKeywords
165177
val shouldOnlyHaveSpaceAfterElementTypes = listOf(
166-
CATCH_KEYWORD, IF_KEYWORD, TRY_KEYWORD, DO_KEYWORD, WHILE_KEYWORD, WHEN_KEYWORD, ELVIS)
178+
CATCH_KEYWORD, FOR_KEYWORD, IF_KEYWORD, TRY_KEYWORD, DO_KEYWORD, WHILE_KEYWORD, WHEN_KEYWORD, ELVIS)
167179
val shouldOnlyHaveSpaceAfterKeywords = listOf("if", "for", "try",
168180
"while", "do", "switch")
169181
}

0 commit comments

Comments
 (0)