diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java
index 715040ac8048..bc75547def81 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java
@@ -678,7 +678,9 @@ public final class HighlightControlFlowUtil {
@NotNull PsiExpression expression,
@NotNull PsiReferenceExpression reference,
@NotNull PsiFile containingFile) {
- if (variable.hasInitializer()) return false;
+ if (variable.hasInitializer()) {
+ return variable instanceof PsiField field && !PsiAugmentProvider.canTrustFieldInitializer(field);
+ }
if (variable instanceof PsiParameter) return false;
PsiElement scope = getElementVariableReferencedFrom(variable, expression);
if (variable instanceof PsiField field) {
diff --git a/plugins/lombok/src/test/java/com/intellij/java/lomboktest/LombokHighlightingTest.java b/plugins/lombok/src/test/java/com/intellij/java/lomboktest/LombokHighlightingTest.java
index 96b3da3ef342..8561ceebe61c 100644
--- a/plugins/lombok/src/test/java/com/intellij/java/lomboktest/LombokHighlightingTest.java
+++ b/plugins/lombok/src/test/java/com/intellij/java/lomboktest/LombokHighlightingTest.java
@@ -48,6 +48,10 @@ public class LombokHighlightingTest extends LightDaemonAnalyzerTestCase {
doTest();
}
+ public void testBuilderWithDefaultReinitializeInConstructor() {
+ doTest();
+ }
+
public void testValueSealedInterface() {
doTest();
}
diff --git a/plugins/lombok/testData/highlighting/BuilderWithDefaultReinitializeInConstructor.java b/plugins/lombok/testData/highlighting/BuilderWithDefaultReinitializeInConstructor.java
new file mode 100644
index 000000000000..d9941e9d7e38
--- /dev/null
+++ b/plugins/lombok/testData/highlighting/BuilderWithDefaultReinitializeInConstructor.java
@@ -0,0 +1,35 @@
+import lombok.Builder;
+import lombok.experimental.SuperBuilder;
+
+@Builder
+class Bar {
+ @Builder.Default
+ private final String bar = "FooBar";
+
+ private final String foo = "Foo";
+
+ public Bar(String bar, String foo) {
+ this.bar = bar;
+ this.foo = foo;
+ }
+}
+
+@SuperBuilder
+class Foo {
+ @Builder.Default
+ private final String bar = "FooBar";
+
+ private final String foo = "Foo";
+
+ public Foo(String bar, String foo) {
+ this.bar = bar;
+ this.foo = foo;
+ }
+}
+
+public class BuilderWithDefaultReinitializeInConstructor {
+ public static void main(String[] args) {
+ new Bar("FooBar", "Foo");
+ new Foo("FooBar", "Foo");
+ }
+}
\ No newline at end of file