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 747d6a63c26f..e0f4a77eef0e 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 @@ -287,7 +287,7 @@ public final class HighlightControlFlowUtil { if (isFieldInitializedAfterObjectConstruction(field)) return null; if (PsiUtilCore.hasErrorElementChild(field)) return null; if (IncompleteModelUtil.isIncompleteModel(field) && IncompleteModelUtil.canBeAugmented(field.getContainingClass())) { - return IncompleteModelUtil.getPendingReferenceHighlightInfo(field); + return IncompleteModelUtil.getPendingInitizializingHighlightInfo(field); } String description = JavaErrorBundle.message("variable.not.initialized", field.getName()); TextRange range = HighlightNamesUtil.getFieldDeclarationTextRange(field); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/IncompleteModelUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/IncompleteModelUtil.java index 53c9835720e7..651926c09761 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/IncompleteModelUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/IncompleteModelUtil.java @@ -280,13 +280,22 @@ final class IncompleteModelUtil { .descriptionAndTooltip(JavaErrorBundle.message("incomplete.project.state.pending.reference")); } + /** + * @param elementToHighlight element to attach the highlighting + * @return HighlightInfo builder that adds a pending initizializing highlight + */ + static HighlightInfo.@NotNull Builder getPendingInitizializingHighlightInfo(@NotNull PsiElement elementToHighlight) { + return HighlightInfo.newHighlightInfo(HighlightInfoType.PENDING_REFERENCE).range(elementToHighlight) + .descriptionAndTooltip(JavaErrorBundle.message("incomplete.project.state.pending.initalizing")); + } + static boolean canBeAugmented(@Nullable PsiClass targetClass) { if (targetClass == null) return false; return CachedValuesManager.getProjectPsiDependentCache(targetClass, psiClass -> PsiAugmentProvider.canBeAugmentedForIncompleteMode(psiClass)); } - static boolean canBeUsedImportImplicitly(@Nullable PsiImportStatementBase importStatementBase) { + private static boolean canBeUsedImportImplicitly(@Nullable PsiImportStatementBase importStatementBase) { if (importStatementBase == null) return false; return PsiAugmentProvider.canBeUsedImportForIncompleteMode(importStatementBase); } diff --git a/java/java-psi-impl/resources/messages/JavaErrorBundle.properties b/java/java-psi-impl/resources/messages/JavaErrorBundle.properties index 04a0d5f1ae92..eaaa5ebbdf4e 100644 --- a/java/java-psi-impl/resources/messages/JavaErrorBundle.properties +++ b/java/java-psi-impl/resources/messages/JavaErrorBundle.properties @@ -597,4 +597,5 @@ error.implicit.class.has.invalid.file.name=Implicitly declared class's file name error.package.statement.not.allowed.for.implicit.class=Package statement is not allowed for implicitly declared class error.initializers.are.not.allowed.in.implicit.classes=Initializers are not allowed in implicitly declared classes remove.unused.imports.quickfix.text=Remove unused imports -incomplete.project.state.pending.reference=Not resolved until the project is fully loaded \ No newline at end of file +incomplete.project.state.pending.reference=Not resolved until the project is fully loaded +incomplete.project.state.pending.initalizing=Not initialized until the project is fully loaded \ No newline at end of file diff --git a/plugins/lombok/testData/highlightingIncompleteMode/LombokBasics.java b/plugins/lombok/testData/highlightingIncompleteMode/LombokBasics.java index 873d10bf0255..b09f8734611e 100644 --- a/plugins/lombok/testData/highlightingIncompleteMode/LombokBasics.java +++ b/plugins/lombok/testData/highlightingIncompleteMode/LombokBasics.java @@ -14,15 +14,15 @@ public final class LombokBasics { @Getter @SuperBuilder class UserDao extends UserId { - private final String name; - private final String surname; - private final String email; + private final String name; + private final String surname; + private final String email; } @SuperBuilder abstract class UserId { - private final long id; - private final String info; + private final long id; + private final String info; } class UserChain { diff --git a/plugins/lombok/testData/highlightingIncompleteMode/LombokBasicsWithExplicitImport.java b/plugins/lombok/testData/highlightingIncompleteMode/LombokBasicsWithExplicitImport.java index 051918dd70ac..10d4d2cb96c1 100644 --- a/plugins/lombok/testData/highlightingIncompleteMode/LombokBasicsWithExplicitImport.java +++ b/plugins/lombok/testData/highlightingIncompleteMode/LombokBasicsWithExplicitImport.java @@ -16,15 +16,15 @@ public final class LombokBasicsWithExplicitImport { @Getter @SuperBuilder class UserDao extends UserId { - private final String name; - private final String surname; - private final String email; + private final String name; + private final String surname; + private final String email; } @SuperBuilder abstract class UserId { - private final long id; - private final String info; + private final long id; + private final String info; } class UserChain {