diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java index 03f72fff5e71..e927625d364c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java @@ -417,7 +417,14 @@ public final class DfaPsiUtil { }); } - public static List findAllConstructorInitializers(PsiField field) { + /** + * Finds all initializers of the specified field inside constructors and class/instance initializers. + * Includes the field's own initializer, if any. + * + * @param field the field find initializers for + * @return the initializers found. + */ + public static @NotNull List findAllConstructorInitializers(@NotNull PsiField field) { final List result = ContainerUtil.createLockFreeCopyOnWriteList(); ContainerUtil.addIfNotNull(result, field.getInitializer()); @@ -428,7 +435,16 @@ public final class DfaPsiUtil { return result; } - public static List findAllConstructorInitializers(PsiRecordComponent component) { + /** + * Finds all initializers of the specified record component. + * This includes the right-side of assignments in a compact constructor to the implicit parameter + * corresponding to the specified component. + * Since a record component is implicitly final, all of its initializers will be inside a constructor (when the code is compilable). + * + * @param component the record component to find initializers for + * @return the initializers found. + */ + static @NotNull List findAllConstructorInitializers(@NotNull PsiRecordComponent component) { PsiClass containingClass = component.getContainingClass(); return containingClass == null || containingClass instanceof PsiCompiledElement ? Collections.emptyList()