[core] Fix missing elements JavaCoreApplicationEnvironment

They caused UAST tests to fail locally. #IDEA-373647 Fixed

GitOrigin-RevId: fbc6bc6af2922761930469b7aa63f30b4754ec55
This commit is contained in:
Bart van Helvert
2025-06-04 11:59:04 +00:00
committed by intellij-monorepo-bot
parent b7fb649572
commit 751be636a6
5 changed files with 41 additions and 6 deletions
@@ -1,4 +1,4 @@
// Copyright 2000-2023 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.core;
import com.intellij.codeInsight.ContainerProvider;
@@ -9,10 +9,12 @@ import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase;
import com.intellij.ide.highlighter.ArchiveFileType;
import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.java.frontback.psi.impl.syntax.JavaSyntaxDefinitionExtension;
import com.intellij.lang.LanguageASTFactory;
import com.intellij.lang.folding.LanguageFolding;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.lang.java.syntax.JavaElementTypeConverterExtension;
import com.intellij.navigation.ItemPresentationProviders;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.fileTypes.BinaryFileTypeDecompilers;
@@ -20,6 +22,9 @@ import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.fileTypes.PlainTextLanguage;
import com.intellij.openapi.fileTypes.PlainTextParserDefinition;
import com.intellij.openapi.projectRoots.JavaVersionService;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.platform.syntax.psi.ElementTypeConverters;
import com.intellij.platform.syntax.psi.LanguageSyntaxDefinitions;
import com.intellij.psi.*;
import com.intellij.psi.compiled.ClassFileDecompilers;
import com.intellij.psi.impl.LanguageConstantExpressionEvaluator;
@@ -51,6 +56,7 @@ public class JavaCoreApplicationEnvironment extends CoreApplicationEnvironment {
registerFileType(JavaClassFileType.INSTANCE, "class");
registerFileType(JavaFileType.INSTANCE, "java");
registerFileType(ArchiveFileType.INSTANCE, "jar;zip");
Registry.get("java.highest.language.level").setValue("24");
registerFileType(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess");
addExplicitExtension(LanguageASTFactory.INSTANCE, PlainTextLanguage.INSTANCE, new PlainTextASTFactory());
@@ -61,6 +67,8 @@ public class JavaCoreApplicationEnvironment extends CoreApplicationEnvironment {
addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder());
addExplicitExtension(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory());
addExplicitExtension(LanguageSyntaxDefinitions.getINSTANCE(), JavaLanguage.INSTANCE, new JavaSyntaxDefinitionExtension());
addExplicitExtension(ElementTypeConverters.getInstance(), JavaLanguage.INSTANCE, new JavaElementTypeConverterExtension());
registerParserDefinition(new JavaParserDefinition());
addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE, JavaLanguage.INSTANCE, new PsiExpressionEvaluator());
@@ -13,9 +13,7 @@ import com.intellij.psi.JavaDocTokenType
import com.intellij.psi.JavaTokenType
import com.intellij.psi.impl.source.tree.JavaDocElementType
import com.intellij.psi.impl.source.tree.JavaElementType
import org.jetbrains.annotations.VisibleForTesting
@VisibleForTesting
class JavaElementTypeConverterExtension : ElementTypeConverterFactory {
override fun getElementTypeConverter(): ElementTypeConverter = javaConverter
@@ -1,3 +1,7 @@
*f:com.intellij.platform.syntax.psi.CommonElementTypeConverterFactory
- com.intellij.platform.syntax.psi.ElementTypeConverterFactory
- <init>():V
- getElementTypeConverter():com.intellij.platform.syntax.psi.ElementTypeConverter
*:com.intellij.platform.syntax.psi.ElementTypeConverter
- a:convert(com.intellij.platform.syntax.SyntaxElementType):com.intellij.psi.tree.IElementType
- a:convert(com.intellij.psi.tree.IElementType):com.intellij.platform.syntax.SyntaxElementType
@@ -6,7 +6,7 @@ import com.intellij.platform.syntax.util.runtime.DUMMY_BLOCK
import com.intellij.psi.DummyBlockType
import com.intellij.psi.TokenType
internal class CommonElementTypeConverterFactory : ElementTypeConverterFactory {
class CommonElementTypeConverterFactory : ElementTypeConverterFactory {
override fun getElementTypeConverter(): ElementTypeConverter = commonConverter
private val commonConverter: ElementTypeConverter = elementTypeConverterOf(
@@ -1,19 +1,27 @@
// 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 org.jetbrains.uast.test.kotlin
import com.intellij.core.CoreApplicationEnvironment
import com.intellij.lang.LanguageExtensionPoint
import com.intellij.mock.MockComponentManager
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runWriteActionAndWait
import com.intellij.openapi.extensions.DefaultPluginDescriptor
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.extensions.impl.ExtensionsAreaImpl
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.platform.syntax.psi.CommonElementTypeConverterFactory
import com.intellij.platform.syntax.psi.ElementTypeConverterFactory
import com.intellij.platform.syntax.psi.ElementTypeConverters
import com.intellij.psi.PsiManager
import com.intellij.psi.PsiNameHelper
import com.intellij.psi.impl.PsiNameHelperImpl
import com.intellij.testFramework.ExtensionTestUtil
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.util.io.URLUtil
import junit.framework.TestCase
@@ -124,6 +132,13 @@ abstract class AbstractKotlinUastTest : TestCase(),
}
private fun initializeCoreEnvironment() {
val extensionArea = ApplicationManager.getApplication().extensionArea as ExtensionsAreaImpl
val pluginDescriptor = DefaultPluginDescriptor(
PluginId.getId(javaClass.getName() + "." + name),
this::class.java.classLoader,
)
CoreApplicationEnvironment.registerApplicationExtensionPoint(
UastLanguagePlugin.EP,
UastLanguagePlugin::class.java,
@@ -140,13 +155,23 @@ abstract class AbstractKotlinUastTest : TestCase(),
)
project.registerService(UastContext::class.java)
Extensions.getRootArea().getExtensionPoint(UastLanguagePlugin.EP)
extensionArea.getExtensionPoint(UastLanguagePlugin.EP)
.registerExtension(JavaUastLanguagePlugin())
AnalysisHandlerExtension.registerExtension(
project,
UastAnalysisHandlerExtension(),
)
extensionArea.registerFakeBeanPoint<ElementTypeConverterFactory>(ElementTypeConverters.instance.name, pluginDescriptor)
val languagePlugin: LanguageExtensionPoint<ElementTypeConverterFactory> =
LanguageExtensionPoint("any", CommonElementTypeConverterFactory())
languagePlugin.pluginDescriptor = pluginDescriptor
ExtensionTestUtil.addExtension(
extensionArea,
ElementTypeConverters.instance,
languagePlugin
)
}
private fun initializeKotlinEnvironment() {