@@ -1489,4 +1489,111 @@ class KotlinPoetTest {
1489
1489
""" .trimMargin(),
1490
1490
)
1491
1491
}
1492
+
1493
+ // https://github.com/square/kotlinpoet/issues/2046
1494
+ @Test fun importAliasCollisionWithRegularImportWhenAliasesComputedFirst () {
1495
+ val class1 = ClassName (" com.squareup.taco" , " Meal" )
1496
+ val class2 = ClassName (" com.squareup.burrito" , " Meal" )
1497
+ val class3 = ClassName (" com.squareup.meal" , " TacoMeal" )
1498
+ val source = FileSpec .builder(" com.squareup.food" , " Food" )
1499
+ .addType(
1500
+ TypeSpec .classBuilder(" Food" )
1501
+ .addProperty(" tacoPackageMeal" , class1)
1502
+ .addProperty(" burritoPackageMeal" , class2)
1503
+ .addProperty(" mealPackageTacoMeal" , class3)
1504
+ .build(),
1505
+ )
1506
+ .build()
1507
+ assertThat(source.toString()).isEqualTo(
1508
+ """
1509
+ |package com.squareup.food
1510
+ |
1511
+ |import com.squareup.burrito.Meal as BurritoMeal
1512
+ |import com.squareup.meal.TacoMeal as MealTacoMeal
1513
+ |import com.squareup.taco.Meal as TacoMeal
1514
+ |
1515
+ |public class Food {
1516
+ | public val tacoPackageMeal: TacoMeal
1517
+ |
1518
+ | public val burritoPackageMeal: BurritoMeal
1519
+ |
1520
+ | public val mealPackageTacoMeal: MealTacoMeal
1521
+ |}
1522
+ |
1523
+ """ .trimMargin(),
1524
+ )
1525
+ }
1526
+
1527
+ // https://github.com/square/kotlinpoet/issues/2046
1528
+ @Test fun importAliasCollisionWithImportWhenRegularImportComputedFirst () {
1529
+ val class1 = ClassName (" com.squareup.taco" , " Meal" )
1530
+ val class2 = ClassName (" com.squareup.burrito" , " Meal" )
1531
+ val class3 = ClassName (" com.squareup.meal" , " TacoMeal" )
1532
+ val source = FileSpec .builder(" com.squareup.food" , " Food" )
1533
+ .addType(
1534
+ TypeSpec .classBuilder(" Food" )
1535
+ .addProperty(" mealPackageTacoMeal" , class3)
1536
+ .addProperty(" tacoPackageMeal" , class1)
1537
+ .addProperty(" burritoPackageMeal" , class2)
1538
+ .build(),
1539
+ )
1540
+ .build()
1541
+ assertThat(source.toString()).isEqualTo(
1542
+ """
1543
+ |package com.squareup.food
1544
+ |
1545
+ |import com.squareup.meal.TacoMeal
1546
+ |import com.squareup.burrito.Meal as SquareupBurritoMeal
1547
+ |import com.squareup.taco.Meal as SquareupTacoMeal
1548
+ |
1549
+ |public class Food {
1550
+ | public val mealPackageTacoMeal: TacoMeal
1551
+ |
1552
+ | public val tacoPackageMeal: SquareupTacoMeal
1553
+ |
1554
+ | public val burritoPackageMeal: SquareupBurritoMeal
1555
+ |}
1556
+ |
1557
+ """ .trimMargin(),
1558
+ )
1559
+ }
1560
+
1561
+ // https://github.com/square/kotlinpoet/issues/2046
1562
+ @Test fun importAliasCollisionWithImportWhenWeRunOutOfSegments () {
1563
+ val class0 = ClassName (" squareup" , " SquareupTacoMeal" )
1564
+ val class1 = ClassName (" squareup.taco" , " Meal" )
1565
+ val class2 = ClassName (" squareup.burrito" , " Meal" )
1566
+ val class3 = ClassName (" squareup" , " TacoMeal" )
1567
+ val source = FileSpec .builder(" squareup.food" , " Food" )
1568
+ .addType(
1569
+ TypeSpec .classBuilder(" Food" )
1570
+ .addProperty(" noMoreSegments" , class0)
1571
+ .addProperty(" mealPackageTacoMeal" , class3)
1572
+ .addProperty(" tacoPackageMeal" , class1)
1573
+ .addProperty(" burritoPackageMeal" , class2)
1574
+ .build(),
1575
+ )
1576
+ .build()
1577
+ assertThat(source.toString()).isEqualTo(
1578
+ """
1579
+ |package squareup.food
1580
+ |
1581
+ |import squareup.SquareupTacoMeal
1582
+ |import squareup.TacoMeal
1583
+ |import squareup.burrito.Meal as SquareupBurritoMeal_
1584
+ |import squareup.taco.Meal as SquareupTacoMeal_
1585
+ |
1586
+ |public class Food {
1587
+ | public val noMoreSegments: SquareupTacoMeal
1588
+ |
1589
+ | public val mealPackageTacoMeal: TacoMeal
1590
+ |
1591
+ | public val tacoPackageMeal: SquareupTacoMeal_
1592
+ |
1593
+ | public val burritoPackageMeal: SquareupBurritoMeal_
1594
+ |}
1595
+ |
1596
+ """ .trimMargin(),
1597
+ )
1598
+ }
1492
1599
}
0 commit comments