[AA] KT-55566 StandaloneProjectFactory: Setup Java language level before Java files are parsed
- LL FIR tests with Java `record` classes and other new syntax features failed because `file.packageName` in `findJvmRootsForJavaFiles` caused the Java file to be parsed before the Java language level was configured. The Java language level is now set up in `registerJavaPsiFacade`, which is early enough.
This commit is contained in:
committed by
Space Team
parent
fed86a57e3
commit
e68111c218
+7
-2
@@ -67,6 +67,9 @@ object StandaloneProjectFactory {
|
|||||||
|
|
||||||
registerService(ExternalAnnotationsManager::class.java, MockExternalAnnotationsManager())
|
registerService(ExternalAnnotationsManager::class.java, MockExternalAnnotationsManager())
|
||||||
registerService(InferredAnnotationsManager::class.java, MockInferredAnnotationsManager())
|
registerService(InferredAnnotationsManager::class.java, MockInferredAnnotationsManager())
|
||||||
|
|
||||||
|
// The Java language level must be configured before Java source files are parsed. See `findJvmRootsForJavaFiles`.
|
||||||
|
setupHighestLanguageLevel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,8 +88,6 @@ object StandaloneProjectFactory {
|
|||||||
|
|
||||||
project.registerService(ProjectStructureProvider::class.java, projectStructureProvider)
|
project.registerService(ProjectStructureProvider::class.java, projectStructureProvider)
|
||||||
initialiseVirtualFileFinderServices(environment, modules, sourceFiles, languageVersionSettings, jdkHome)
|
initialiseVirtualFileFinderServices(environment, modules, sourceFiles, languageVersionSettings, jdkHome)
|
||||||
|
|
||||||
project.setupHighestLanguageLevel()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initialiseVirtualFileFinderServices(
|
private fun initialiseVirtualFileFinderServices(
|
||||||
@@ -153,6 +154,10 @@ object StandaloneProjectFactory {
|
|||||||
project.registerService(VirtualFileFinderFactory::class.java, finderFactory)
|
project.registerService(VirtualFileFinderFactory::class.java, finderFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note that [findJvmRootsForJavaFiles] parses the given [files] because it needs access to each file's package name. To avoid parsing
|
||||||
|
* errors, [registerJavaPsiFacade] ensures that the Java language level is configured before [findJvmRootsForJavaFiles] is called.
|
||||||
|
*/
|
||||||
fun findJvmRootsForJavaFiles(files: List<PsiJavaFile>): List<PsiDirectory> {
|
fun findJvmRootsForJavaFiles(files: List<PsiJavaFile>): List<PsiDirectory> {
|
||||||
if (files.isEmpty()) return emptyList()
|
if (files.isEmpty()) return emptyList()
|
||||||
val result = mutableSetOf<PsiDirectory>()
|
val result = mutableSetOf<PsiDirectory>()
|
||||||
|
|||||||
-1
@@ -1,5 +1,4 @@
|
|||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// FIR_IDE_IGNORE
|
|
||||||
|
|
||||||
// FILE: MyInterface.java
|
// FILE: MyInterface.java
|
||||||
public interface MyInterface<T> {
|
public interface MyInterface<T> {
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||||
// ISSUE: KT-41215, KT-43551
|
// ISSUE: KT-41215, KT-43551
|
||||||
|
|
||||||
|
|||||||
Vendored
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||||
// ISSUE: KT-41215, KT-43551
|
// ISSUE: KT-41215, KT-43551
|
||||||
|
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||||
// ISSUE: KT-41215, KT-43551
|
// ISSUE: KT-41215, KT-43551
|
||||||
|
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||||
// ISSUE: KT-41215, KT-43551
|
// ISSUE: KT-41215, KT-43551
|
||||||
|
|
||||||
|
|||||||
Vendored
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// ISSUE: KT-41215
|
// ISSUE: KT-41215
|
||||||
|
|
||||||
|
|||||||
Vendored
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDE_IGNORE
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// ISSUE: KT-41215
|
// ISSUE: KT-41215
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user