Accept invalid patterns in naming convention settings
#KT-19926 Fixed
This commit is contained in:
@@ -34,21 +34,27 @@ import org.jetbrains.kotlin.psi.*
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
|
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
|
||||||
import java.awt.BorderLayout
|
import java.awt.BorderLayout
|
||||||
|
import java.util.regex.PatternSyntaxException
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
abstract class NamingConventionInspection(private val entityName: String,
|
abstract class NamingConventionInspection(private val entityName: String,
|
||||||
defaultNamePattern: String) : AbstractKotlinInspection() {
|
defaultNamePattern: String) : AbstractKotlinInspection() {
|
||||||
protected var nameRegex: Regex = defaultNamePattern.toRegex()
|
protected var nameRegex: Regex? = defaultNamePattern.toRegex()
|
||||||
var namePattern: String = defaultNamePattern
|
var namePattern: String = defaultNamePattern
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
nameRegex = value.toRegex()
|
nameRegex = try {
|
||||||
|
value.toRegex()
|
||||||
|
}
|
||||||
|
catch(e: PatternSyntaxException) {
|
||||||
|
null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun verifyName(element: PsiNameIdentifierOwner, holder: ProblemsHolder) {
|
protected fun verifyName(element: PsiNameIdentifierOwner, holder: ProblemsHolder) {
|
||||||
val name = element.name
|
val name = element.name
|
||||||
val nameIdentifier = element.nameIdentifier
|
val nameIdentifier = element.nameIdentifier
|
||||||
if (name != null && nameIdentifier != null && !nameRegex.matches(name)) {
|
if (name != null && nameIdentifier != null && nameRegex?.matches(name) == false) {
|
||||||
holder.registerProblem(element.nameIdentifier!!,
|
holder.registerProblem(element.nameIdentifier!!,
|
||||||
"$entityName name <code>#ref</code> doesn't match regex '$namePattern' #loc",
|
"$entityName name <code>#ref</code> doesn't match regex '$namePattern' #loc",
|
||||||
RenameIdentifierFix())
|
RenameIdentifierFix())
|
||||||
@@ -140,7 +146,7 @@ class PackageNameInspection : NamingConventionInspection("Package", "[a-z][A-Za-
|
|||||||
return object : KtVisitorVoid() {
|
return object : KtVisitorVoid() {
|
||||||
override fun visitPackageDirective(directive: KtPackageDirective) {
|
override fun visitPackageDirective(directive: KtPackageDirective) {
|
||||||
val qualifiedName = directive.qualifiedName
|
val qualifiedName = directive.qualifiedName
|
||||||
if (qualifiedName.isNotEmpty() && !nameRegex.matches(qualifiedName)) {
|
if (qualifiedName.isNotEmpty() && nameRegex?.matches(qualifiedName) == false) {
|
||||||
holder.registerProblem(directive.packageNameExpression!!,
|
holder.registerProblem(directive.packageNameExpression!!,
|
||||||
"Package name <code>#ref</code> doesn't match regex '$namePattern' #loc",
|
"Package name <code>#ref</code> doesn't match regex '$namePattern' #loc",
|
||||||
RenamePackageFix())
|
RenamePackageFix())
|
||||||
|
|||||||
Reference in New Issue
Block a user