[Test] Prohibit declaring dependency on the same module with different kinds in module structure
This commit is contained in:
committed by
Space Team
parent
c71b80823c
commit
83cbd322fd
Vendored
+2
-2
@@ -16,7 +16,7 @@ class Mut<T>(var _value: T) {
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: main.kt
|
||||
import lib.*
|
||||
|
||||
@@ -73,4 +73,4 @@ fun box(): String {
|
||||
if (localDelegatedVarByProvider != 3) throw AssertionError()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ class Mut<T>(var _value: T) {
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: main.kt
|
||||
import lib.*
|
||||
|
||||
@@ -73,4 +73,4 @@ fun box(): String {
|
||||
if (localDelegatedVarByProvider != 3) throw AssertionError()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,10 @@ open internal class In {
|
||||
fun k() = "K"
|
||||
}
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: m.kt
|
||||
|
||||
class Derived: Base()
|
||||
internal class IDerived: In()
|
||||
|
||||
fun box(): String = Derived().o() + IDerived().k()
|
||||
fun box(): String = Derived().o() + IDerived().k()
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ internal class A {
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
package main
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ class Mut<T>(var _value: T) {
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: main.kt
|
||||
import lib.*
|
||||
|
||||
|
||||
+1
-1
@@ -299,7 +299,7 @@ class ClassicFrontendFacade(
|
||||
val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration)
|
||||
val transitiveLibraries = JsEnvironmentConfigurator.getDependencies(module, testServices, DependencyRelation.RegularDependency)
|
||||
val friendLibraries = JsEnvironmentConfigurator.getDependencies(module, testServices, DependencyRelation.FriendDependency)
|
||||
val allDependencies = runtimeKlibs + dependencyDescriptors + transitiveLibraries
|
||||
val allDependencies = runtimeKlibs + dependencyDescriptors + friendsDescriptors + transitiveLibraries
|
||||
|
||||
val analyzer = AnalyzerWithCompilerReport(configuration)
|
||||
val builtInModuleDescriptor = allDependencies.firstNotNullOfOrNull { it.builtIns }?.builtInsModule
|
||||
|
||||
+16
-2
@@ -280,11 +280,25 @@ class ModuleStructureExtractorImpl(
|
||||
dependenciesNames = dependenciesNames.filter { it != "support" }
|
||||
}
|
||||
}
|
||||
val friendsNames = friends.takeIf { it.isNotBlank() }?.split(" ") ?: emptyList()
|
||||
val dependsOnNames = dependsOn.takeIf { it.isNotBlank() }?.split(" ") ?: emptyList()
|
||||
|
||||
val intersection = buildSet {
|
||||
addAll(dependenciesNames intersect friendsNames)
|
||||
addAll(dependenciesNames intersect dependsOnNames)
|
||||
addAll(friendsNames intersect dependsOnNames)
|
||||
}
|
||||
require(intersection.isEmpty()) {
|
||||
val m = if (intersection.size == 1) "module" else "modules"
|
||||
val names = if (intersection.size == 1) "`${intersection.first()}`" else intersection.joinToArrayString()
|
||||
"""Module `$name` depends on $m $names with different kinds simultaneously"""
|
||||
}
|
||||
|
||||
return ModuleNameAndDependencies(
|
||||
name,
|
||||
dependenciesNames,
|
||||
friends.takeIf { it.isNotBlank() }?.split(" ") ?: emptyList(),
|
||||
dependsOn.takeIf { it.isNotBlank() }?.split(" ") ?: emptyList(),
|
||||
friendsNames,
|
||||
dependsOnNames,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ internal inline fun test1(): String {
|
||||
|
||||
internal fun callTest1(): String = test1()
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: lib.kt
|
||||
internal inline fun test2(): String {
|
||||
val x = C()
|
||||
@@ -38,4 +38,4 @@ fun box(): String {
|
||||
if (r2 != "2abcd") return "fail2: $r2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,6 @@ internal fun bar() = "OK"
|
||||
|
||||
internal inline fun foo() = bar()
|
||||
|
||||
// MODULE: main(lib)(lib)
|
||||
// MODULE: main()(lib)
|
||||
// FILE: main.kt
|
||||
fun box(): String = foo()
|
||||
fun box(): String = foo()
|
||||
|
||||
Reference in New Issue
Block a user