@@ -68,7 +68,7 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
68
68
69
69
private fun needSpaceBothBeforeAndAfter (element : PsiElement ): Boolean {
70
70
if (element.language is KotlinLanguage ) {
71
- return (element is LeafPsiElement
71
+ return (( element is LeafPsiElement
72
72
&& element.parent !is KtValueArgument
73
73
&& element.parent !is KtImportDirective
74
74
&& (element.parent !is KtOperationReferenceExpression
@@ -77,7 +77,10 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
77
77
&& element.parent !is KtTypeParameterList
78
78
&& ((element.parent !is KtWhenEntry && element.elementType == ELSE_KEYWORD )
79
79
|| 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)
81
84
} else {
82
85
return element is PsiJavaToken
83
86
&& element.parent !is PsiReferenceParameterList
@@ -90,7 +93,16 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
90
93
}
91
94
92
95
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
+
94
106
}
95
107
96
108
private fun onlyNeedSpaceAfter (element : PsiElement ): Boolean {
@@ -157,13 +169,13 @@ open class JavaOrKotlinCodeFormatVisitor(holder: ProblemsHolder) : BaseCodeForma
157
169
val shouldHaveSpaceBothBeforeAndAfterElementTypes = listOf (
158
170
PLUSPLUS , MINUSMINUS , MUL , PLUS , MINUS , DIV , PERC ,
159
171
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 )
161
173
val shouldHaveSpaceBothBeforeAndAfterKeywords = shouldHaveSpaceBothBeforeAndAfterElementTypes
162
- .map { it.value } + listOf (" else" )
174
+ .map { it.value } + listOf (" else" , " catch " )
163
175
val shouldHaveSpaceBothBeforeAndAfterTokens = listOf (" >" , " <" , " =" , " >=" , " <=" , " !=" , " &&" , " ||" , " &" , " |" , " ==" ,
164
- " +" , " -" , " *" , " /" , " %" , " +=" , " -=" , " /=" , " *=" , " >>" , " <<" , " <>" )
176
+ " +" , " -" , " *" , " /" , " %" , " +=" , " -=" , " /=" , " *=" , " >>" , " <<" , " <>" ) + shouldHaveSpaceBothBeforeAndAfterKeywords
165
177
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 )
167
179
val shouldOnlyHaveSpaceAfterKeywords = listOf (" if" , " for" , " try" ,
168
180
" while" , " do" , " switch" )
169
181
}
0 commit comments