diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties
index f76a6a1042b..3d5d73b295c 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties
@@ -82,7 +82,6 @@ options.kotlin.attribute.descriptor.local.variable=Properties and Variables//Loc
options.kotlin.attribute.descriptor.captured.variable=Properties and Variables//Variables and values captured in a closure
options.kotlin.attribute.descriptor.instance.property=Properties and Variables//Instance property
options.kotlin.attribute.descriptor.package.property=Properties and Variables//Package-level property
-options.kotlin.attribute.descriptor.property.with.backing=Properties and Variables//Property with backing field
options.kotlin.attribute.descriptor.field=Properties and Variables//Backing field variable
options.kotlin.attribute.descriptor.extension.property=Properties and Variables//Extension property
options.kotlin.attribute.descriptor.dynamic.property=Properties and Variables//Dynamic property
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java
index 7d686ed9d55..a4ce8bd9cc3 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java
@@ -63,7 +63,6 @@ public class KotlinHighlightingColors {
public static final TextAttributesKey WRAPPED_INTO_REF = createTextAttributesKey("KOTLIN_WRAPPED_INTO_REF", DefaultLanguageHighlighterColors.CLASS_NAME);
public static final TextAttributesKey INSTANCE_PROPERTY = createTextAttributesKey("KOTLIN_INSTANCE_PROPERTY", DefaultLanguageHighlighterColors.INSTANCE_FIELD);
public static final TextAttributesKey PACKAGE_PROPERTY = createTextAttributesKey("KOTLIN_PACKAGE_PROPERTY", DefaultLanguageHighlighterColors.STATIC_FIELD);
- public static final TextAttributesKey PROPERTY_WITH_BACKING_FIELD = createTextAttributesKey("KOTLIN_PROPERTY_WITH_BACKING_FIELD");
public static final TextAttributesKey BACKING_FIELD_VARIABLE = createTextAttributesKey("KOTLIN_BACKING_FIELD_VARIABLE");
public static final TextAttributesKey EXTENSION_PROPERTY = createTextAttributesKey("KOTLIN_EXTENSION_PROPERTY");
public static final TextAttributesKey DYNAMIC_PROPERTY_CALL = createTextAttributesKey("KOTLIN_DYNAMIC_PROPERTY_CALL");
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt
index 7c55b2b605d..016c139434b 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt
@@ -20,6 +20,7 @@ import com.intellij.lang.annotation.AnnotationHolder
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
+import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors.*
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
@@ -37,22 +38,21 @@ internal class PropertiesHighlightingVisitor(holder: AnnotationHolder, bindingCo
}
val target = bindingContext.get(BindingContext.REFERENCE_TARGET, expression)
if (target is SyntheticFieldDescriptor) {
- NameHighlighter.highlightName(holder, expression, KotlinHighlightingColors.BACKING_FIELD_VARIABLE)
+ holder.highlightName(expression, BACKING_FIELD_VARIABLE)
return
}
if (target !is PropertyDescriptor) {
return
}
- highlightProperty(expression, (target as PropertyDescriptor?)!!, false)
+ highlightProperty(expression, target)
}
override fun visitProperty(property: KtProperty) {
val nameIdentifier = property.nameIdentifier ?: return
val propertyDescriptor = bindingContext.get(BindingContext.VARIABLE, property)
if (propertyDescriptor is PropertyDescriptor) {
- val backingFieldRequired = bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor as PropertyDescriptor?)
- highlightProperty(nameIdentifier, (propertyDescriptor as PropertyDescriptor?)!!, java.lang.Boolean.TRUE == backingFieldRequired)
+ highlightProperty(nameIdentifier, propertyDescriptor)
}
super.visitProperty(property)
@@ -62,8 +62,7 @@ internal class PropertiesHighlightingVisitor(holder: AnnotationHolder, bindingCo
val nameIdentifier = parameter.nameIdentifier ?: return
val propertyDescriptor = bindingContext.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, parameter)
if (propertyDescriptor != null) {
- val backingFieldRequired = bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)
- highlightProperty(nameIdentifier, propertyDescriptor, java.lang.Boolean.TRUE == backingFieldRequired)
+ highlightProperty(nameIdentifier, propertyDescriptor)
}
super.visitParameter(parameter)
@@ -71,22 +70,21 @@ internal class PropertiesHighlightingVisitor(holder: AnnotationHolder, bindingCo
private fun highlightProperty(
elementToHighlight: PsiElement,
- descriptor: PropertyDescriptor,
- withBackingField: Boolean) {
- if (descriptor.isDynamic()) {
- NameHighlighter.highlightName(holder, elementToHighlight, KotlinHighlightingColors.DYNAMIC_PROPERTY_CALL)
- return
- }
+ descriptor: PropertyDescriptor) {
- val isStatic = DescriptorUtils.isStaticDeclaration(descriptor)
- NameHighlighter.highlightName(
- holder, elementToHighlight,
- if (isStatic) KotlinHighlightingColors.PACKAGE_PROPERTY else KotlinHighlightingColors.INSTANCE_PROPERTY)
- if (descriptor.extensionReceiverParameter != null) {
- NameHighlighter.highlightName(holder, elementToHighlight, KotlinHighlightingColors.EXTENSION_PROPERTY)
- }
- if (withBackingField) {
- holder.createInfoAnnotation(elementToHighlight, "This property has a backing field").textAttributes = KotlinHighlightingColors.PROPERTY_WITH_BACKING_FIELD
+ val color = when {
+ descriptor.isDynamic() ->
+ DYNAMIC_PROPERTY_CALL
+
+ descriptor.extensionReceiverParameter != null ->
+ EXTENSION_PROPERTY
+
+ DescriptorUtils.isStaticDeclaration(descriptor) ->
+ PACKAGE_PROPERTY
+
+ else ->
+ INSTANCE_PROPERTY
}
+ holder.highlightName(elementToHighlight, color)
}
}
diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt
index e5b3c0a0a5b..822995d1f49 100644
--- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt
@@ -72,7 +72,7 @@ fun Int?.bar() {
}
}
-var globalCounter : Int = 5
+var globalCounter : Int = 5
get = field
abstract class Abstract {
@@ -141,7 +141,6 @@ var globalCount
KotlinBundle.message("options.kotlin.attribute.descriptor.captured.variable") to KotlinHighlightingColors.WRAPPED_INTO_REF,
KotlinBundle.message("options.kotlin.attribute.descriptor.instance.property") to KotlinHighlightingColors.INSTANCE_PROPERTY,
KotlinBundle.message("options.kotlin.attribute.descriptor.package.property") to KotlinHighlightingColors.PACKAGE_PROPERTY,
- KotlinBundle.message("options.kotlin.attribute.descriptor.property.with.backing") to KotlinHighlightingColors.PROPERTY_WITH_BACKING_FIELD,
KotlinBundle.message("options.kotlin.attribute.descriptor.field") to KotlinHighlightingColors.BACKING_FIELD_VARIABLE,
KotlinBundle.message("options.kotlin.attribute.descriptor.extension.property") to KotlinHighlightingColors.EXTENSION_PROPERTY,
KotlinBundle.message("options.kotlin.attribute.descriptor.dynamic.property") to KotlinHighlightingColors.DYNAMIC_PROPERTY_CALL,
diff --git a/idea/testData/highlighter/Field.kt b/idea/testData/highlighter/Field.kt
index 44d89c86b83..77d9154a48c 100644
--- a/idea/testData/highlighter/Field.kt
+++ b/idea/testData/highlighter/Field.kt
@@ -1,4 +1,4 @@
-var my = 0
+var my = 0
get() = field
set(arg) {
field = arg + 1
diff --git a/idea/testData/highlighter/SmartCast.kt b/idea/testData/highlighter/SmartCast.kt
index 4c8191d3830..a696d5ad4c2 100644
--- a/idea/testData/highlighter/SmartCast.kt
+++ b/idea/testData/highlighter/SmartCast.kt
@@ -1,4 +1,4 @@
-class My(val x: Int?)
+class My(val x: Int?)
fun My?.foo(): Int {
if (this == null) return 42
diff --git a/idea/testData/highlighter/Variables.kt b/idea/testData/highlighter/Variables.kt
index 9f857031533..3d09249b51c 100644
--- a/idea/testData/highlighter/Variables.kt
+++ b/idea/testData/highlighter/Variables.kt
@@ -1,16 +1,16 @@
-var x = 5
+var x = 5
-val Int.sq : Int
+val Int.sq : Int
get() {
return this * this
}
-val y : Int = 1
+val y : Int = 1
get() {
- return 5.sq + field + x
+ return 5.sq + field + x
}
-class Foo(val a : Int, b : String) {
+class Foo(val a : Int, b : String) {
init {
b
}
diff --git a/idea/testData/highlighter/VariablesAsFunctions.kt b/idea/testData/highlighter/VariablesAsFunctions.kt
index e6ba967f55a..3beb661c09f 100644
--- a/idea/testData/highlighter/VariablesAsFunctions.kt
+++ b/idea/testData/highlighter/VariablesAsFunctions.kt
@@ -3,9 +3,9 @@ interface FunctionLike {
}
}
-var global : () -> Unit = {}
+var global : () -> Unit = {}
-val Int.ext : () -> Unit
+val Int.ext : () -> Unit
get() {
return {}
}
@@ -14,7 +14,7 @@ fun foo(a()
functionLike()
global()
- 1.ext();
+ 1.ext();
{}() //should not be highlighted as "calling variable as function"!
}