From 38649ac5398a7e1e0b2eca9f5a138e9eb6e3deaf Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 6 Nov 2023 09:17:15 +0100 Subject: [PATCH] Java: create dependent constant from usage in interface correctly (IDEA-337008) GitOrigin-RevId: 3afbc697d94e692278ea74fe73fa3bc8982e50af --- .../intellij/lang/java/actions/CreateFieldAction.kt | 12 +++--------- .../afterDependantConstant2.java | 5 +++++ .../beforeDependantConstant2.java | 4 ++++ .../impl/quickfix/CreateFieldFromUsageTest.java | 5 ++--- 4 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant2.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant2.java diff --git a/java/java-impl/src/com/intellij/lang/java/actions/CreateFieldAction.kt b/java/java-impl/src/com/intellij/lang/java/actions/CreateFieldAction.kt index c5d80ed25161..947827433cde 100644 --- a/java/java-impl/src/com/intellij/lang/java/actions/CreateFieldAction.kt +++ b/java/java-impl/src/com/intellij/lang/java/actions/CreateFieldAction.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// 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.lang.java.actions import com.intellij.codeInsight.CodeInsightUtil.positionCursor @@ -50,14 +50,8 @@ internal class JavaFieldRenderer( private val modifiersToRender: Collection get() { return if (constantField) { - if (targetClass.isInterface) { - // interface fields are public static final implicitly, so modifiers don't have to be rendered - request.modifiers - constantModifiers - visibilityModifiers - } - else { - // render static final explicitly - request.modifiers + constantModifiers - } + // render static final explicitly + request.modifiers + constantModifiers } else { // render as is diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant2.java new file mode 100644 index 000000000000..5f5bd3ed389c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant2.java @@ -0,0 +1,5 @@ +// "Create constant field 'SOME_REGEXP'" "true-preview" +interface IntroduceConstant { + String SOME_REGEXP = ; + String SOME_PATTERN = SOME_REGEXP; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant2.java new file mode 100644 index 000000000000..50692f268f0d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant2.java @@ -0,0 +1,4 @@ +// "Create constant field 'SOME_REGEXP'" "true-preview" +interface IntroduceConstant { + String SOME_PATTERN = SOME_REGEXP; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageTest.java index d97b4f9ca9e9..b9fa9065f66d 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageTest.java @@ -64,9 +64,8 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase { doSingleTest(); } - public void testDependantConstant() { - doSingleTest(); - } + public void testDependantConstant() { doSingleTest(); } + public void testDependantConstant2() { doSingleTest(); } public void testArrayBraces() { doSingleTest();