From 2df86d09f621d1e0260e8bc275604108df238a3f Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 30 Oct 2025 13:48:54 +0100 Subject: [PATCH] Java: show call hierarchy for default constructor when invoked on class (IDEA-110255) GitOrigin-RevId: 59ca22d492344c921e5d32da883cb83d3c6aff8a --- .../ide/hierarchy/call/JavaCallHierarchyProvider.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/call/JavaCallHierarchyProvider.java b/java/java-impl/src/com/intellij/ide/hierarchy/call/JavaCallHierarchyProvider.java index e214d48050eb..a732b361a533 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/call/JavaCallHierarchyProvider.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/call/JavaCallHierarchyProvider.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.hierarchy.call; import com.intellij.ide.hierarchy.CallHierarchyBrowserBase; @@ -8,6 +8,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.impl.light.LightDefaultConstructor; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -17,8 +18,12 @@ public class JavaCallHierarchyProvider implements HierarchyProvider { Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) return null; PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext); - if (element instanceof PsiField || element instanceof PsiRecordComponent - || element instanceof PsiClass aClass && aClass.isRecord()) return element; + if (element instanceof PsiField || element instanceof PsiRecordComponent) return element; + else if (element instanceof PsiClass aClass) { + if (aClass.isRecord()) return element; + PsiMethod defaultConstructor = LightDefaultConstructor.create(aClass); + if (defaultConstructor != null) return defaultConstructor; + } return PsiTreeUtil.getParentOfType(element, PsiMethod.class, false); }