mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
[java] Return correct JVM name for unnamed classes in ClassUtil
IJ-CR-115084 GitOrigin-RevId: 844a16051344f7e0ad591b2bc672e0f528447180
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ff764c7aad
commit
fccc651088
@@ -15,7 +15,7 @@ import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.jsp.JspFile;
|
||||
import com.intellij.psi.util.JavaUnnamedClassUtil;
|
||||
import com.intellij.psi.util.ClassUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
@@ -282,7 +282,7 @@ public final class JVMNameUtil {
|
||||
return null;
|
||||
}
|
||||
if (aClass instanceof PsiUnnamedClass a) {
|
||||
return JavaUnnamedClassUtil.getJvmName(a);
|
||||
return ClassUtil.getJVMClassName(a);
|
||||
}
|
||||
String name = aClass.getName();
|
||||
if (name == null) {
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.JavaUnnamedClassUtil;
|
||||
import com.intellij.psi.util.PsiMethodUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -61,11 +60,9 @@ public abstract class AbstractApplicationConfigurationProducer<T extends Applica
|
||||
|
||||
private void setupConfiguration(T configuration, final PsiClass aClass, final ConfigurationContext context) {
|
||||
if (aClass instanceof PsiUnnamedClass) {
|
||||
configuration.setMainClassName(JavaUnnamedClassUtil.getJvmName(aClass.getContainingFile().getName()));
|
||||
configuration.setUnnamedClassConfiguration(true);
|
||||
} else {
|
||||
configuration.setMainClassName(JavaExecutionUtil.getRuntimeQualifiedName(aClass));
|
||||
}
|
||||
configuration.setMainClassName(JavaExecutionUtil.getRuntimeQualifiedName(aClass));
|
||||
configuration.setGeneratedName();
|
||||
setupConfigurationModule(context, configuration);
|
||||
}
|
||||
@@ -80,9 +77,7 @@ public abstract class AbstractApplicationConfigurationProducer<T extends Applica
|
||||
Location<?> singleClassLocation = JavaExecutionUtil.stepIntoSingleClass(location);
|
||||
final PsiClass aClass = PsiTreeUtil.getParentOfType(singleClassLocation.getPsiElement(), PsiClass.class, false);
|
||||
if (aClass != null) {
|
||||
final String className = aClass instanceof PsiUnnamedClass
|
||||
? JavaUnnamedClassUtil.getJvmName(aClass.getContainingFile().getName())
|
||||
: JavaExecutionUtil.getRuntimeQualifiedName(aClass);
|
||||
final String className = JavaExecutionUtil.getRuntimeQualifiedName(aClass);
|
||||
if (!Objects.equals(className, appConfiguration.getMainClassName())) return false;
|
||||
|
||||
final PsiMethod method = PsiTreeUtil.getParentOfType(context.getPsiLocation(), PsiMethod.class, false);
|
||||
|
||||
@@ -12,11 +12,9 @@ import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.util.Predicates;
|
||||
import com.intellij.psi.impl.java.stubs.index.JavaStubIndexKeys;
|
||||
import com.intellij.psi.stubs.StubIndex;
|
||||
import com.intellij.psi.util.JavaUnnamedClassUtil;
|
||||
import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.ui.TextFieldWithAutoCompletion;
|
||||
import com.intellij.ui.TextFieldWithAutoCompletion.StringsCompletionProvider;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.GridBag;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -102,10 +100,7 @@ public final class JavaApplicationSettingsEditor extends JavaSettingsEditorBase<
|
||||
public @NotNull Collection<String> getItems(String prefix, boolean cached, CompletionParameters parameters) {
|
||||
return DumbService.isDumb(getProject())
|
||||
? List.of()
|
||||
: ContainerUtil.map(
|
||||
StubIndex.getInstance().getAllKeys(JavaStubIndexKeys.UNNAMED_CLASSES, getProject()),
|
||||
JavaUnnamedClassUtil::getJvmName
|
||||
);
|
||||
: StubIndex.getInstance().getAllKeys(JavaStubIndexKeys.UNNAMED_CLASSES, getProject());
|
||||
}
|
||||
}, true, null);
|
||||
CommonParameterFragments.setMonospaced(myUnnamedClassField);
|
||||
|
||||
@@ -6,9 +6,9 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfoType;
|
||||
import com.intellij.codeInsight.intention.QuickFixFactory;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.ClassUtil;
|
||||
import com.intellij.psi.util.JavaUnnamedClassUtil;
|
||||
import com.intellij.psi.util.PsiMethodUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -38,7 +38,7 @@ public final class HighlightUnnamedClassUtil {
|
||||
if (!HighlightingFeature.UNNAMED_CLASSES.isAvailable(file)) return null;
|
||||
PsiUnnamedClass unnamedClass = JavaUnnamedClassUtil.getUnnamedClassFor(file);
|
||||
if (unnamedClass == null) return null;
|
||||
String name = JavaUnnamedClassUtil.getJvmName(unnamedClass);
|
||||
String name = ClassUtil.getJVMClassName(unnamedClass);
|
||||
if (name == null) {
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
|
||||
.range(file)
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.util.JavaUnnamedClassUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -40,6 +41,10 @@ public class PsiUnnamedClassImpl extends JavaStubPsiElement<PsiClassStub<?>> imp
|
||||
|
||||
@Override
|
||||
public @Nullable String getQualifiedName() {
|
||||
PsiElement parent = getParent();
|
||||
if (parent instanceof PsiJavaFile) {
|
||||
return JavaUnnamedClassUtil.getJvmName(((PsiJavaFile)parent).getName());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,20 +36,6 @@ public final class JavaUnnamedClassUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return JVM name if the file name is a valid class identifier (e.g., contains no space)
|
||||
*/
|
||||
public static @Nullable String getJvmName(@NotNull PsiUnnamedClass unnamedClass) {
|
||||
PsiFile containingFile = unnamedClass.getContainingFile();
|
||||
if (containingFile == null) return null;
|
||||
String name = containingFile.getName();
|
||||
int extensionIndex = name.lastIndexOf(".java");
|
||||
if (extensionIndex == -1) return null;
|
||||
String jvmName = name.substring(0, extensionIndex);
|
||||
if (!StringUtil.isJavaIdentifier(jvmName)) return null;
|
||||
return jvmName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name the name of the unnamed class (might include the ".java" extension)
|
||||
* @return the JVM name of the unnamed class
|
||||
|
||||
Reference in New Issue
Block a user