@@ -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