mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
[lombok] MoveInitializerToConstructorAction: do not warn when all the constructors are synthetic
Fixes IDEA-313384 Lombok vs. Move initializer to constructor GitOrigin-RevId: d5ceb52fec3937178b41adf156b29a8a35ceee75
This commit is contained in:
committed by
intellij-monorepo-bot
parent
50f2f5e439
commit
44ce06450e
@@ -1,4 +1,4 @@
|
|||||||
// 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.
|
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
package com.intellij.codeInsight.intention.impl;
|
package com.intellij.codeInsight.intention.impl;
|
||||||
|
|
||||||
import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil;
|
import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil;
|
||||||
@@ -12,6 +12,7 @@ import com.intellij.psi.search.LocalSearchScope;
|
|||||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.util.ArrayUtil;
|
import com.intellij.util.ArrayUtil;
|
||||||
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -34,9 +35,11 @@ public class MoveInitializerToConstructorAction extends BaseMoveInitializerToMet
|
|||||||
if (super.isAvailable(project, editor, element)) {
|
if (super.isAvailable(project, editor, element)) {
|
||||||
final PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class);
|
final PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class);
|
||||||
assert field != null;
|
assert field != null;
|
||||||
|
PsiClass containingClass = field.getContainingClass();
|
||||||
|
assert containingClass != null;
|
||||||
|
PsiMethod[] constructors = containingClass.getConstructors();
|
||||||
|
if (constructors.length > 0 && ContainerUtil.all(constructors, c -> c instanceof SyntheticElement)) return false;
|
||||||
if (field.hasModifierProperty(PsiModifier.FINAL)) {
|
if (field.hasModifierProperty(PsiModifier.FINAL)) {
|
||||||
PsiClass containingClass = field.getContainingClass();
|
|
||||||
assert containingClass != null;
|
|
||||||
PsiClassInitializer[] initializers = containingClass.getInitializers();
|
PsiClassInitializer[] initializers = containingClass.getInitializers();
|
||||||
PsiElement[] elements =
|
PsiElement[] elements =
|
||||||
Arrays.stream(containingClass.getFields())
|
Arrays.stream(containingClass.getFields())
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package de.plushnikov.intellij.plugin.inspection;
|
||||||
|
|
||||||
|
import com.intellij.testFramework.LightProjectDescriptor;
|
||||||
|
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
|
||||||
|
import de.plushnikov.intellij.plugin.LombokTestUtil;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|
||||||
|
public class LombokMoveInitializerToConstructorTest extends LightJavaCodeInsightFixtureTestCase {
|
||||||
|
@Override
|
||||||
|
protected @NotNull LightProjectDescriptor getProjectDescriptor() {
|
||||||
|
return LombokTestUtil.LOMBOK_DESCRIPTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveInitializerToConstructor() {
|
||||||
|
myFixture.configureByText("Test.java", """
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class Main {
|
||||||
|
int x;
|
||||||
|
int y = <caret>3;
|
||||||
|
}
|
||||||
|
""");
|
||||||
|
assertEmpty(myFixture.filterAvailableIntentions("Move initializer to constructor"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user