Use module path instead of class path for stdlib on Java 9

Also report the "named does not read unnamed" error, which was not
possible previously because we wouldn't be able to read anything from
kotlin-stdlib (because it was added to the unnamed module by default)
This commit is contained in:
Alexander Udalov
2017-07-07 18:25:06 +03:00
parent c94b21edd5
commit 03a6488464
16 changed files with 118 additions and 37 deletions
@@ -0,0 +1,3 @@
module namedWithExplicitDependency {
requires kotlin.stdlib;
}
@@ -0,0 +1,6 @@
import kotlin.text.Regex
fun f1(): List<String?> = emptyList()
fun f2(): Array<Lazy<Unit>> = arrayOf()
fun f3(map: Map<Int, Regex>): Collection<Regex> =
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
@@ -0,0 +1,34 @@
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:1:20: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
import kotlin.text.Regex
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:3:27: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
fun f1(): List<String?> = emptyList()
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:4:17: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
fun f2(): Array<Lazy<Unit>> = arrayOf()
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:4:22: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
fun f2(): Array<Lazy<Unit>> = arrayOf()
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:5:22: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
fun f3(map: Map<Int, Regex>): Collection<Regex> =
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:5:42: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
fun f3(map: Map<Int, Regex>): Collection<Regex> =
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:6:13: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:6:26: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:6:31: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:6:48: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
^
compiler/testData/javaModules/dependencyOnStdlib/namedWithoutExplicitDependency/test.kt:6:61: error: symbol is declared in module 'kotlin.stdlib' which current module does not depend on
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
^
COMPILATION_ERROR
@@ -0,0 +1,2 @@
module namedWithoutExplicitDependency {
}
@@ -0,0 +1,6 @@
import kotlin.text.Regex
fun f1(): List<String?> = emptyList()
fun f2(): Array<Lazy<Unit>> = arrayOf()
fun f3(map: Map<Int, Regex>): Collection<Regex> =
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values
@@ -0,0 +1 @@
OK
@@ -0,0 +1,6 @@
import kotlin.text.Regex
fun f1(): List<String?> = emptyList()
fun f2(): Array<Lazy<Unit>> = arrayOf()
fun f3(map: Map<Int, Regex>): Collection<Regex> =
map.filterNot { (key, entry) -> "$key".equals(entry.toString(), ignoreCase = true) }.values