This commit is contained in:
Valentin Kipyatkov
2016-03-25 18:50:52 +03:00
parent 2625c6bc29
commit b9865c7225
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.highlighter
import com.intellij.lang.annotation.AnnotationHolder import com.intellij.lang.annotation.AnnotationHolder
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.impl.source.tree.LeafPsiElement
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtLambdaExpression import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtVisitorVoid import org.jetbrains.kotlin.psi.KtVisitorVoid
@@ -27,29 +26,34 @@ import org.jetbrains.kotlin.psi.KtVisitorVoid
internal class SoftKeywordsHighlightingVisitor(private val holder: AnnotationHolder) : KtVisitorVoid() { internal class SoftKeywordsHighlightingVisitor(private val holder: AnnotationHolder) : KtVisitorVoid() {
override fun visitElement(element: PsiElement) { override fun visitElement(element: PsiElement) {
if (element is LeafPsiElement) { val elementType = element.node.elementType
val elementType = element.elementType val attributes = when (elementType) {
if (KtTokens.SOFT_KEYWORDS.contains(elementType)) { in KtTokens.SOFT_KEYWORDS -> {
var attributes = KotlinHighlightingColors.KEYWORD when (elementType) {
if (KtTokens.MODIFIER_KEYWORDS.contains(elementType)) { in KtTokens.MODIFIER_KEYWORDS -> KotlinHighlightingColors.BUILTIN_ANNOTATION
attributes = KotlinHighlightingColors.BUILTIN_ANNOTATION else -> KotlinHighlightingColors.KEYWORD
} }
holder.createInfoAnnotation(element as PsiElement, null).textAttributes = attributes
}
if (KtTokens.SAFE_ACCESS == elementType) {
holder.createInfoAnnotation(element as PsiElement, null).textAttributes = KotlinHighlightingColors.SAFE_ACCESS
} }
KtTokens.SAFE_ACCESS -> KotlinHighlightingColors.SAFE_ACCESS
else -> return
} }
holder.createInfoAnnotation(element, null).textAttributes = attributes
} }
override fun visitLambdaExpression(lambdaExpression: KtLambdaExpression) { override fun visitLambdaExpression(lambdaExpression: KtLambdaExpression) {
if (ApplicationManager.getApplication().isUnitTestMode) return if (ApplicationManager.getApplication().isUnitTestMode) return
val functionLiteral = lambdaExpression.functionLiteral val functionLiteral = lambdaExpression.functionLiteral
holder.createInfoAnnotation(functionLiteral.lBrace, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW holder.createInfoAnnotation(functionLiteral.lBrace, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW
val closingBrace = functionLiteral.rBrace val closingBrace = functionLiteral.rBrace
if (closingBrace != null) { if (closingBrace != null) {
holder.createInfoAnnotation(closingBrace, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW holder.createInfoAnnotation(closingBrace, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW
} }
val arrow = functionLiteral.arrow val arrow = functionLiteral.arrow
if (arrow != null) { if (arrow != null) {
holder.createInfoAnnotation(arrow, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW holder.createInfoAnnotation(arrow, null).textAttributes = KotlinHighlightingColors.FUNCTION_LITERAL_BRACES_AND_ARROW