diff --git a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/NamingConventionInspections.kt b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/NamingConventionInspections.kt index 70d6694b3ab8..608647dfa9a3 100644 --- a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/NamingConventionInspections.kt +++ b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/NamingConventionInspections.kt @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.idea.codeInsight.inspections.shared import com.intellij.analysis.AnalysisScope import com.intellij.codeInspection.* import com.intellij.codeInspection.options.OptPane -import com.intellij.codeInspection.options.OptPane.* +import com.intellij.codeInspection.options.OptPane.pane +import com.intellij.codeInspection.options.OptPane.string import com.intellij.codeInspection.options.OptionController import com.intellij.codeInspection.options.RegexValidator import com.intellij.codeInspection.reference.RefEntity @@ -261,7 +262,7 @@ abstract class PropertyNameInspectionBase protected constructor( override fun visitProperty(property: KtProperty) { if (property.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return if (property.getKind() == kind) { - verifyName(property, holder) + verifyName(property, holder, additionalCheck = { additionalPropertyCheck(property) }) } } @@ -281,6 +282,8 @@ abstract class PropertyNameInspectionBase protected constructor( } } + protected open fun additionalPropertyCheck(property: KtNamedDeclaration): Boolean = true + private val PsiNamedElement.isSingleUnderscore: Boolean get() = name == "_" @@ -349,6 +352,9 @@ class ConstPropertyNameInspection : PropertyNameInspectionBase( "[A-Z][_A-Z\\d]*" ) { override fun getNamingRules(): Array = arrayOf(NO_LOWER, NO_BAD_CHARACTERS) + + override fun additionalPropertyCheck(property: KtNamedDeclaration): Boolean = + property.name != "serialVersionUID" } class LocalVariableNameInspection : PropertyNameInspectionBase( diff --git a/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/inspectionData/expected.xml b/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/inspectionData/expected.xml index c95fe110f278..a0db33a08eac 100644 --- a/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/inspectionData/expected.xml +++ b/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/inspectionData/expected.xml @@ -1,28 +1,28 @@ test.kt - 14 + 17 light_idea_test_case Const property name <code>lowerCase1</code> should not contain lowercase letters #loc test.kt - 16 + 19 light_idea_test_case Const property name <code>`BAD CHAR`</code> may contain only letters and digits #loc test.kt - 26 + 29 light_idea_test_case Const property name <code>lowerCase1</code> should not contain lowercase letters #loc test.kt - 28 + 31 light_idea_test_case Const property name <code>`BAD CHAR`</code> may contain only letters and digits #loc diff --git a/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/test.kt b/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/test.kt index bfbdb8530b51..32145128c008 100644 --- a/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/test.kt +++ b/plugins/kotlin/code-insight/inspections-shared/tests/testData/inspections/naming/constant/test.kt @@ -1,3 +1,5 @@ +import java.io.Serializable + val justVal = "" const val NO_WARNING: String = "" @@ -6,8 +8,9 @@ const val lowerCase1: String = "" const val `BAD CHAR` = "" -class ContainerClass { +class ContainerClass : Serializable { companion object { + private const val serialVersionUID = -78L const val NO_WARNING: String = ""