Java: match javac from jdk 24 in error highlighting for Flexible Constructor Bodies - JEP 492 (IDEA-364189)

(cherry picked from commit 686bd65963483f93acd22ae8956681f889105409)

GitOrigin-RevId: b8c02f835e7173b68aa39aee57e4a8c590608482
This commit is contained in:
Bas Leijdekkers
2025-01-10 17:10:10 +01:00
committed by intellij-monorepo-bot
parent 8e0d1b142f
commit 3746633993
3 changed files with 23 additions and 2 deletions

View File

@@ -2801,7 +2801,13 @@ public final class HighlightUtil {
if (JavaFeature.STATEMENTS_BEFORE_SUPER.isSufficient(languageLevel) &&
languageLevel != LanguageLevel.JDK_22_PREVIEW &&
isOnSimpleAssignmentLeftHand(expression) &&
field.getContainingClass() == PsiTreeUtil.getParentOfType(expression, PsiClass.class, true)) {
field.getContainingClass() == PsiTreeUtil.getParentOfType(expression, PsiClass.class, PsiLambdaExpression.class)) {
if (field.hasInitializer()) {
String fieldName = PsiFormatUtil.formatVariable(
field, PsiFormatUtilBase.SHOW_CONTAINING_CLASS | PsiFormatUtilBase.SHOW_NAME, PsiSubstitutor.EMPTY);
String description = JavaErrorBundle.message("assign.initialized.field.before.constructor.call", fieldName);
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(description);
}
return null;
}
resolvedName =
@@ -2934,7 +2940,7 @@ public final class HighlightUtil {
if (isOnSimpleAssignmentLeftHand(parent) &&
parent instanceof PsiReferenceExpression ref &&
ref.resolve() instanceof PsiField field &&
field.getContainingClass() == PsiTreeUtil.getParentOfType(expression, PsiClass.class, true)) {
field.getContainingClass() == PsiTreeUtil.getParentOfType(expression, PsiClass.class, PsiLambdaExpression.class)) {
return null;
}
}