diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/GroovyBundle.properties b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/GroovyBundle.properties
index 1569ad3cca50..a00a918aac4b 100644
--- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/GroovyBundle.properties
+++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/GroovyBundle.properties
@@ -220,7 +220,7 @@ final.class.cannot.be.extended=Final class cannot be extended
#Groovy 2.5 checks
duplicating.named.parameter=Duplicate named parameter ''{0}'' occurs in parameters: {1}
-field.should.be.immutable=Parameter ''{0}'' should have immutable type or be declared so with @ImmutableOptions
+field.should.be.immutable=Field ''{0}'' should have immutable type or be declared so with @ImmutableOptions
#Groovy 3.0 checks
illegal.default.modifier=Modifier 'default' makes sense only in interface's methods
diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator25.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator25.kt
index 5938f372482c..30b0581cf8ed 100644
--- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator25.kt
+++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator25.kt
@@ -2,6 +2,7 @@
package org.jetbrains.plugins.groovy.annotator
import com.intellij.lang.annotation.AnnotationHolder
+import com.intellij.psi.PsiModifier
import org.jetbrains.plugins.groovy.GroovyBundle
import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField
@@ -32,7 +33,7 @@ class GroovyAnnotator25(private val holder: AnnotationHolder) : GroovyElementVis
private fun immutableCheck(field: GrField) {
val containingClass = field.containingClass ?: return
- if (field.isProperty && hasImmutableAnnotation(containingClass) && !isImmutable(field)) {
+ if (!field.hasModifierProperty(PsiModifier.STATIC) && hasImmutableAnnotation(containingClass) && !isImmutable(field)) {
holder.createErrorAnnotation(field.nameIdentifierGroovy, GroovyBundle.message("field.should.be.immutable", field.name))
}
}
diff --git a/plugins/groovy/testdata/highlighting/v25/immutableFields.groovy b/plugins/groovy/testdata/highlighting/v25/immutableFields.groovy
index f722c8fabe82..e61402c79a2e 100644
--- a/plugins/groovy/testdata/highlighting/v25/immutableFields.groovy
+++ b/plugins/groovy/testdata/highlighting/v25/immutableFields.groovy
@@ -6,13 +6,14 @@ import groovy.transform.KnownImmutable
@Immutable
class A {
int a
- private Iterator b
- Iterator c
+ private Iterator b
+ private static Iterator b2
+ Iterator c
String d
E e
URI f
Thread g
- MuttableClass h
+ MuttableClass h
MuttableClass h2
ImmuttableClass i
Object[] j = new Object[1]