mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PublicConstructorInNonPublicClass: do not report compact/canonical constructors in records
GitOrigin-RevId: 9b12f70be57e9d4c2e5915af5b899ba41a7452c6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a6cf900ac4
commit
962a2b176f
+6
@@ -18,6 +18,7 @@ package com.siyeh.ig.classlayout;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.JavaPsiRecordUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
@@ -104,6 +105,11 @@ public class PublicConstructorInNonPublicClassInspection extends BaseInspection
|
||||
if (containingClass == null) {
|
||||
return;
|
||||
}
|
||||
if (containingClass.isRecord() &&
|
||||
(JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isCanonicalConstructor(method))) {
|
||||
// compact and canonical constructors in record must be public, according to spec
|
||||
return;
|
||||
}
|
||||
if (containingClass.hasModifierProperty(PsiModifier.PUBLIC) ||
|
||||
containingClass.hasModifierProperty(PsiModifier.PROTECTED)) {
|
||||
return;
|
||||
|
||||
+16
@@ -12,3 +12,19 @@ class PublicConstructorInNonPublicClass {
|
||||
public B() {}
|
||||
}
|
||||
}
|
||||
record Rec() {
|
||||
public Rec {}
|
||||
<warning descr="Constructor is declared 'public' in non-public class 'Rec'">public</warning> Rec(int x) {
|
||||
this();
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
record Rec2(int x) {
|
||||
<warning descr="Constructor is declared 'public' in non-public class 'Rec2'">public</warning> Rec2() {
|
||||
this(0);
|
||||
}
|
||||
public Rec2(int x) {
|
||||
System.out.println(x);
|
||||
this.x = x;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -16,7 +16,7 @@ public class PublicConstructorInNonPublicClassInspectionTest extends LightJavaCo
|
||||
@NotNull
|
||||
@Override
|
||||
protected LightProjectDescriptor getProjectDescriptor() {
|
||||
return JAVA_8;
|
||||
return JAVA_14;
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
|
||||
Reference in New Issue
Block a user