Skip to content

Commit 36ccbe2

Browse files
authored
Add typealias resolution test (#4447)
* Add test for #4422 * Update AA to 2.4.0-1645
1 parent 76417b9 commit 36ccbe2

File tree

3 files changed

+84
-2
lines changed

3 files changed

+84
-2
lines changed

dokka-subprojects/plugin-base/src/test/kotlin/content/typealiases/NestedTypealiasTest.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import matchers.content.groupedLink
1616
import matchers.content.header
1717
import matchers.content.link
1818
import matchers.content.platformHinted
19+
import matchers.content.skipAllNotMatching
1920
import matchers.content.table
2021
import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
2122
import org.jetbrains.dokka.model.dfs
@@ -624,6 +625,40 @@ class NestedTypealiasTest : BaseAbstractTest() {
624625
}
625626
}
626627
}
628+
629+
@Test
630+
fun `#4422 top level typealias to nested typealias`() {
631+
testInline(
632+
"""
633+
|/src/common/kotlin/test/test.kt
634+
|package test
635+
|open class AliasHolder {
636+
| typealias NestedAlias = String
637+
|}
638+
|typealias AliasToTopLevelClassInsideNested = AliasHolder.NestedAlias
639+
""", multiplatformConfiguration
640+
) {
641+
pagesTransformationStage = { module ->
642+
val page = module.dfs { it.name == "AliasToTopLevelClassInsideNested" } as ClasslikePageNode
643+
page.content.assertNode {
644+
group {
645+
header(1) { +"AliasToTopLevelClassInsideNested" }
646+
647+
platformHinted {
648+
group2 {
649+
+"typealias "
650+
groupedLink { +"AliasToTopLevelClassInsideNested" }
651+
+" = "
652+
groupedLink { +"AliasHolder.NestedAlias" }
653+
}
654+
}
655+
}
656+
657+
skipAllNotMatching()
658+
}
659+
}
660+
}
661+
}
627662
}
628663

629664
private fun ContentMatcherBuilder<*>.table(

dokka-subprojects/plugin-base/src/test/kotlin/model/TypesTest.kt

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.driOrNull
99
import org.jetbrains.dokka.links.DRI
1010
import org.jetbrains.dokka.model.*
1111
import utils.AbstractModelTest
12+
import utils.OnlyDescriptors
1213
import utils.OnlySymbols
1314
import utils.assertIsInstance
1415
import kotlin.test.Test
@@ -257,4 +258,50 @@ class TypesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "types")
257258
}
258259
}
259260
}
261+
262+
@Test
263+
@OnlySymbols("Different resolution on K2")
264+
fun `#4422 top level typealias to nested typealias`() {
265+
inlineModelTest(
266+
"""
267+
|open class AliasHolder {
268+
| typealias NestedAlias = String
269+
|}
270+
|typealias AliasToTopLevelClassInsideNested = AliasHolder.NestedAlias"""
271+
) {
272+
with((this / "types" / "AliasToTopLevelClassInsideNested").cast<DTypeAlias>()) {
273+
val type = type
274+
type.assertIsInstance<GenericTypeConstructor>()
275+
type.projections counts 0
276+
277+
name equals "AliasToTopLevelClassInsideNested"
278+
val nestedTypeAlias = underlyingType.values.first()
279+
nestedTypeAlias.assertIsInstance<TypeAliased>()
280+
nestedTypeAlias.driOrNull equals DRI("types", "AliasHolder.NestedAlias")
281+
nestedTypeAlias.inner.driOrNull equals DRI("kotlin", "String")
282+
}
283+
}
284+
}
285+
286+
@Test
287+
@OnlyDescriptors("Different resolution on K2")
288+
fun `#4422 top level typealias to nested typealias K1`() {
289+
inlineModelTest(
290+
"""
291+
|open class AliasHolder {
292+
| typealias NestedAlias = String
293+
|}
294+
|typealias AliasToTopLevelClassInsideNested = AliasHolder.NestedAlias"""
295+
) {
296+
with((this / "types" / "AliasToTopLevelClassInsideNested").cast<DTypeAlias>()) {
297+
val type = type
298+
type.assertIsInstance<GenericTypeConstructor>()
299+
type.projections counts 0
300+
301+
name equals "AliasToTopLevelClassInsideNested"
302+
val nestedTypeAlias = underlyingType.values.first()
303+
nestedTypeAlias.driOrNull equals DRI("types", "AliasHolder.NestedAlias")
304+
}
305+
}
306+
}
260307
}

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ ktor = "2.3.11"
2121
javaDiffUtils = "4.12"
2222

2323
## Analysis
24-
kotlin-compiler = "2.4.0-dev-169"
25-
kotlin-compiler-k2 = "2.4.0-dev-169"
24+
kotlin-compiler = "2.4.0-dev-1645"
25+
kotlin-compiler-k2 = "2.4.0-dev-1645"
2626

2727
# MUST match the version of the intellij platform used in the kotlin compiler,
2828
# otherwise this will lead to different versions of psi API and implementations

0 commit comments

Comments
 (0)