mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] highlights inaccessible or ambiguous packages
This commit is contained in:
@@ -57,9 +57,13 @@ class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
if (module != null) {
|
||||
val test = index.isInTestSourceContent(useVFile)
|
||||
val dirs = target.getDirectories(module.getModuleWithDependenciesAndLibrariesScope(test))
|
||||
if (dirs.size == 1) {
|
||||
return checkAccess(dirs[0], useFile, target.qualifiedName, quick)
|
||||
if (dirs.isEmpty()) {
|
||||
return if (quick) ERR else ErrorWithFixes(JavaErrorMessages.message("package.not.found", target.qualifiedName))
|
||||
}
|
||||
val error = checkAccess(dirs[0], useFile, target.qualifiedName, quick)
|
||||
return if (error == null ||
|
||||
dirs.size > 1 && dirs.asSequence().drop(1).any { checkAccess(it, useFile, target.qualifiedName, true) == null }) null
|
||||
else error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -58,12 +58,12 @@ class ModuleCompletionTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
fun testExportsToUnambiguous() = complete("module M { exports pkg.other to M<caret> }", "module M { exports pkg.other to M2<caret> }")
|
||||
|
||||
fun testUsesPrefixed() = complete("module M { uses p<caret> }", "module M { uses pkg.<caret> }")
|
||||
fun testUsesQualified1() = variants("module M { uses pkg.<caret> }", "main", "other", "empty", "lib2")
|
||||
fun testUsesQualified1() = variants("module M { uses pkg.<caret> }", "main", "other", "empty")
|
||||
fun testUsesQualified2() = variants("module M { uses pkg.main.<caret> }", "MyAnno", "MySvc")
|
||||
fun testUsesUnambiguous() = complete("module M { uses pkg.main.MS<caret> }", "module M { uses pkg.main.MySvc<caret> }")
|
||||
|
||||
fun testProvidesPrefixed() = complete("module M { provides p<caret> }", "module M { provides pkg.<caret> }")
|
||||
fun testProvidesQualified1() = variants("module M { provides pkg.<caret> }", "main", "other", "empty", "lib2")
|
||||
fun testProvidesQualified1() = variants("module M { provides pkg.<caret> }", "main", "other", "empty")
|
||||
fun testProvidesQualified2() = variants("module M { provides pkg.main.<caret> }", "MyAnno", "MySvc")
|
||||
fun testProvidesUnambiguous() = complete("module M { provides pkg.main.MS<caret> }", "module M { provides pkg.main.MySvc<caret> }")
|
||||
fun testProvidesWith() = complete("module M { provides pkg.main.MySvc <caret> }", "module M { provides pkg.main.MySvc with <caret> }")
|
||||
|
||||
@@ -216,10 +216,13 @@ class ModuleHighlightingTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
addFile("module-info.java", "module M2 { exports pkg.m2; exports pkg.m2.impl to close.friends.only; }", M2)
|
||||
addFile("pkg/m2/C2.java", "package pkg.m2;\npublic class C2 { }", M2)
|
||||
addFile("pkg/m2/impl/C2Impl.java", "package pkg.m2.impl;\nimport pkg.m2.C2;\npublic class C2Impl { public static int I; public static C2 make() {} }", M2)
|
||||
addFile("pkg/sub/C2X.java", "package pkg.sub;\npublic class C2X { }", M2)
|
||||
addFile("pkg/unreachable/C3.java", "package pkg.unreachable;\npublic class C3 { }", M3)
|
||||
addFile("pkg/m4/C4.java", "package pkg.m4;\npublic class C4 { }", M4)
|
||||
addFile("module-info.java", "module M5 { exports pkg.m5; }", M5)
|
||||
addFile("pkg/m5/C5.java", "package pkg.m5;\npublic class C5 { }", M5)
|
||||
addFile("module-info.java", "module M6 { requires transitive M7; }", M6)
|
||||
addFile("pkg/sub/C6X.java", "package pkg.sub;\npublic class C6X { }", M6)
|
||||
addFile("module-info.java", "module M7 { exports pkg.m7; }", M7)
|
||||
addFile("pkg/m7/C7.java", "package pkg.m7;\npublic class C7 { }", M7)
|
||||
highlight("test.java", """
|
||||
@@ -230,6 +233,8 @@ class ModuleHighlightingTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
import <error descr="Package 'pkg.m4' is declared in the unnamed module, but module 'M' does not read it">pkg.m4</error>.C4;
|
||||
import <error descr="Package 'pkg.m5' is declared in module 'M5', but module 'M' does not read it">pkg.m5</error>.C5;
|
||||
import pkg.m7.C7;
|
||||
import <error descr="Package 'pkg.sub' is declared in module 'M2', which does not export it to module 'M'">pkg.sub</error>.*;
|
||||
import <error descr="Package not found: pkg.unreachable">pkg.unreachable</error>.*;
|
||||
|
||||
import pkg.lib1.LC1;
|
||||
import <error descr="Package 'pkg.lib1.impl' is declared in module 'lib.named', which does not export it to module 'M'">pkg.lib1.impl</error>.LC1Impl;
|
||||
|
||||
Reference in New Issue
Block a user