mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
JavaPsiRecordUtil#isCanonicalConstructor -> isExplicitCanonicalConstructor
GitOrigin-RevId: a3c68d4956c23a726118f6eb8b22e45881d84e09
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7a82851f07
commit
586bd6da28
+2
-2
@@ -1280,7 +1280,7 @@ public class HighlightMethodUtil {
|
||||
PsiMethod ctor = ObjectUtils.tryCast(codeBlock.getParent(), PsiMethod.class);
|
||||
if (ctor != null && ctor.isConstructor()) {
|
||||
if (JavaPsiRecordUtil.isCompactConstructor(ctor) ||
|
||||
JavaPsiRecordUtil.isCanonicalConstructor(ctor)) {
|
||||
JavaPsiRecordUtil.isExplicitCanonicalConstructor(ctor)) {
|
||||
String message = JavaErrorMessages.message("record.constructor.call.in.canonical");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(methodCall).descriptionAndTooltip(message).create();
|
||||
}
|
||||
@@ -1953,7 +1953,7 @@ public class HighlightMethodUtil {
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (JavaPsiRecordUtil.isCanonicalConstructor(method)) {
|
||||
if (JavaPsiRecordUtil.isExplicitCanonicalConstructor(method)) {
|
||||
PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
PsiRecordComponent[] components = aClass.getRecordComponents();
|
||||
List<HighlightInfo> problems = new ArrayList<>();
|
||||
|
||||
@@ -56,10 +56,11 @@ public class JavaPsiRecordUtil {
|
||||
|
||||
/**
|
||||
* @param method method to check
|
||||
* @return true if given method is a canonical (non-compact) constructor for a record class
|
||||
* @return true if given method is an explicit canonical (non-compact) constructor for a record class
|
||||
*/
|
||||
public static boolean isCanonicalConstructor(@NotNull PsiMethod method) {
|
||||
public static boolean isExplicitCanonicalConstructor(@NotNull PsiMethod method) {
|
||||
if (!method.isConstructor() || isCompactConstructor(method)) return false;
|
||||
if (method instanceof SyntheticElement) return false;
|
||||
PsiClass aClass = method.getContainingClass();
|
||||
if (aClass == null || !aClass.isRecord()) return false;
|
||||
return hasCanonicalSignature(method, aClass.getRecordComponents());
|
||||
|
||||
@@ -929,6 +929,6 @@ public class ExceptionUtil {
|
||||
public static boolean canDeclareThrownExceptions(@NotNull PsiMethod method) {
|
||||
return JavaPsiRecordUtil.getRecordComponentForAccessor(method) == null &&
|
||||
!JavaPsiRecordUtil.isCompactConstructor(method) &&
|
||||
!JavaPsiRecordUtil.isCanonicalConstructor(method);
|
||||
!JavaPsiRecordUtil.isExplicitCanonicalConstructor(method);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class RecordAugmentProvider extends PsiAugmentProvider {
|
||||
String className = aClass.getName();
|
||||
if (className == null) return null;
|
||||
for (PsiMethod method : ownMethods) {
|
||||
if (JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isCanonicalConstructor(method)) return null;
|
||||
if (JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isExplicitCanonicalConstructor(method)) return null;
|
||||
}
|
||||
PsiElementFactory factory = JavaPsiFacade.getElementFactory(recordHeader.getProject());
|
||||
String sb = "public " + className + recordHeader.getText() + "{}";
|
||||
|
||||
+2
-5
@@ -1,10 +1,7 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.psi.impl.light;
|
||||
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.ElementPresentationUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.ui.IconManager;
|
||||
@@ -16,7 +13,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class LightRecordCanonicalConstructor extends LightMethod {
|
||||
public class LightRecordCanonicalConstructor extends LightMethod implements SyntheticElement {
|
||||
public LightRecordCanonicalConstructor(@NotNull PsiMethod method,
|
||||
@NotNull PsiClass containingClass) {
|
||||
super(method.getManager(), method, containingClass);
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@ public class PublicConstructorInNonPublicClassInspection extends BaseInspection
|
||||
return;
|
||||
}
|
||||
if (containingClass.isRecord() &&
|
||||
(JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isCanonicalConstructor(method))) {
|
||||
(JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isExplicitCanonicalConstructor(method))) {
|
||||
// compact and canonical constructors in record must be public, according to spec
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ public class ChangeModifierIntention extends BaseElementAtCaretIntentionAction {
|
||||
if (containingClass == null || containingClass.isEnum() && method.isConstructor()) return Collections.emptyList();
|
||||
if (JavaPsiRecordUtil.getRecordComponentForAccessor(method) != null ||
|
||||
JavaPsiRecordUtil.isCompactConstructor(method) ||
|
||||
JavaPsiRecordUtil.isCanonicalConstructor(method)) {
|
||||
JavaPsiRecordUtil.isExplicitCanonicalConstructor(method)) {
|
||||
return Collections.singletonList(AccessModifier.PUBLIC);
|
||||
}
|
||||
if (containingClass.isInterface()) {
|
||||
|
||||
Reference in New Issue
Block a user