Use stable order for dependsOn and related diagnostics
This commit is contained in:
+4
-1
@@ -143,7 +143,9 @@ class ExpectedActualDeclarationChecker(
|
|||||||
trace.report(Errors.AMBIGUOUS_ACTUALS.on(
|
trace.report(Errors.AMBIGUOUS_ACTUALS.on(
|
||||||
reportOn,
|
reportOn,
|
||||||
descriptor,
|
descriptor,
|
||||||
atLeastWeaklyCompatibleActuals.map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } }
|
atLeastWeaklyCompatibleActuals
|
||||||
|
.map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } }
|
||||||
|
.sorted()
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,6 +306,7 @@ class ExpectedActualDeclarationChecker(
|
|||||||
.map { (_, members) -> members }
|
.map { (_, members) -> members }
|
||||||
.flatten()
|
.flatten()
|
||||||
.map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } }
|
.map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } }
|
||||||
|
.sorted()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
if (filesWithAtLeastWeaklyCompatibleExpects.size > 1) {
|
if (filesWithAtLeastWeaklyCompatibleExpects.size > 1) {
|
||||||
|
|||||||
@@ -127,15 +127,15 @@ fun KotlinType.isDefaultBound(): Boolean = KotlinBuiltIns.isDefaultBound(getSupe
|
|||||||
fun createProjection(type: KotlinType, projectionKind: Variance, typeParameterDescriptor: TypeParameterDescriptor?): TypeProjection =
|
fun createProjection(type: KotlinType, projectionKind: Variance, typeParameterDescriptor: TypeParameterDescriptor?): TypeProjection =
|
||||||
TypeProjectionImpl(if (typeParameterDescriptor?.variance == projectionKind) Variance.INVARIANT else projectionKind, type)
|
TypeProjectionImpl(if (typeParameterDescriptor?.variance == projectionKind) Variance.INVARIANT else projectionKind, type)
|
||||||
|
|
||||||
fun <T> Collection<T>.closure(f: (T) -> Collection<T>): Collection<T> {
|
fun <T> Collection<T>.closure(preserveOrder: Boolean = false, f: (T) -> Collection<T>): Collection<T> {
|
||||||
if (size == 0) return this
|
if (size == 0) return this
|
||||||
|
|
||||||
val result = HashSet(this)
|
val result = if (preserveOrder) LinkedHashSet(this) else HashSet(this)
|
||||||
var elementsToCheck = result
|
var elementsToCheck = result
|
||||||
var oldSize = 0
|
var oldSize = 0
|
||||||
while (result.size > oldSize) {
|
while (result.size > oldSize) {
|
||||||
oldSize = result.size
|
oldSize = result.size
|
||||||
val toAdd = hashSetOf<T>()
|
val toAdd = if (preserveOrder) linkedSetOf() else hashSetOf<T>()
|
||||||
elementsToCheck.forEach { toAdd.addAll(f(it)) }
|
elementsToCheck.forEach { toAdd.addAll(f(it)) }
|
||||||
result.addAll(toAdd)
|
result.addAll(toAdd)
|
||||||
elementsToCheck = toAdd
|
elementsToCheck = toAdd
|
||||||
|
|||||||
+1
-1
@@ -79,7 +79,7 @@ private fun mergePlatformModules(
|
|||||||
listOf(module to module.expectedBy)
|
listOf(module to module.expectedBy)
|
||||||
else emptyList()
|
else emptyList()
|
||||||
}.map { (module, expectedBys) ->
|
}.map { (module, expectedBys) ->
|
||||||
PlatformModuleInfo(module, expectedBys.closure { it.expectedBy }.toList())
|
PlatformModuleInfo(module, expectedBys.closure(preserveOrder = true) { it.expectedBy }.toList())
|
||||||
}
|
}
|
||||||
|
|
||||||
val rest = allModules - platformModules.flatMap { it.containedModules }
|
val rest = allModules - platformModules.flatMap { it.containedModules }
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ fun AbstractMultiModuleTest.doSetup(projectModel: ProjectResolveModel) {
|
|||||||
}.toMap()
|
}.toMap()
|
||||||
|
|
||||||
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
||||||
resolveModule.dependencies.closure { it.to.dependencies }.forEach {
|
resolveModule.dependencies.closure(preserveOrder = true) { it.to.dependencies }.forEach {
|
||||||
when (val to = it.to) {
|
when (val to = it.to) {
|
||||||
FullJdk -> ConfigLibraryUtil.configureSdk(ideaModule, PluginTestCaseBase.addJdk(testRootDisposable) {
|
FullJdk -> ConfigLibraryUtil.configureSdk(ideaModule, PluginTestCaseBase.addJdk(testRootDisposable) {
|
||||||
PluginTestCaseBase.jdk(TestJdkKind.FULL_JDK)
|
PluginTestCaseBase.jdk(TestJdkKind.FULL_JDK)
|
||||||
|
|||||||
Reference in New Issue
Block a user