diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/KoParentDeclarationForKoSourceDeclarationProviderTest.kt b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/KoParentDeclarationForKoSourceDeclarationProviderTest.kt index f3f5806f39..18f380051f 100644 --- a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/KoParentDeclarationForKoSourceDeclarationProviderTest.kt +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/KoParentDeclarationForKoSourceDeclarationProviderTest.kt @@ -302,6 +302,20 @@ class KoParentDeclarationForKoSourceDeclarationProviderTest { null, null, ), + arguments( + "class-with-parent-interface-with-the-same-name", + KoInterfaceDeclaration::class, + KoClassDeclaration::class, + null, + "com.samplepackage.SampleInterface.SampleName", + ), + arguments( + "class-with-parent-class-with-the-same-name", + KoClassDeclaration::class, + KoInterfaceDeclaration::class, + null, + "com.samplepackage.SampleInterface.SampleName", + ), ) @Suppress("unused", "detekt.LongMethod") @@ -364,6 +378,13 @@ class KoParentDeclarationForKoSourceDeclarationProviderTest { null, null, ), + arguments( + "interface-with-parent-interface-with-the-same-name", + KoInterfaceDeclaration::class, + KoClassDeclaration::class, + null, + "com.samplepackage.SampleInterface.SampleName", + ), ) @Suppress("unused", "detekt.LongMethod") @@ -510,6 +531,20 @@ class KoParentDeclarationForKoSourceDeclarationProviderTest { null, null, ), + arguments( + "object-with-parent-interface-with-the-same-name", + KoInterfaceDeclaration::class, + KoClassDeclaration::class, + null, + "com.samplepackage.SampleInterface.SampleName", + ), + arguments( + "object-with-parent-class-with-the-same-name", + KoClassDeclaration::class, + KoInterfaceDeclaration::class, + null, + "com.samplepackage.SampleInterface.SampleName", + ), ) } } diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-class-with-the-same-name.kttest b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-class-with-the-same-name.kttest new file mode 100644 index 0000000000..1ceef7ce92 --- /dev/null +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-class-with-the-same-name.kttest @@ -0,0 +1,7 @@ +package com.samplepackage + +data class SampleName(val data: String) : SampleInterface.SampleName() + +interface SampleInterface { + open class SampleName +} diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-interface-with-the-same-name.kttest b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-interface-with-the-same-name.kttest new file mode 100644 index 0000000000..8e333c8b55 --- /dev/null +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/class-with-parent-interface-with-the-same-name.kttest @@ -0,0 +1,7 @@ +package com.samplepackage + +data class SampleName(val data: String) : SampleInterface.SampleName + +interface SampleInterface { + interface SampleName +} diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/interface-with-parent-interface-with-the-same-name.kttest b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/interface-with-parent-interface-with-the-same-name.kttest new file mode 100644 index 0000000000..a40ce0d8d5 --- /dev/null +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/interface-with-parent-interface-with-the-same-name.kttest @@ -0,0 +1,7 @@ +package com.samplepackage + +interface SampleName : SampleInterface.SampleName + +interface SampleInterface { + interface SampleName +} diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-class-with-the-same-name.kttest b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-class-with-the-same-name.kttest new file mode 100644 index 0000000000..2667935b6f --- /dev/null +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-class-with-the-same-name.kttest @@ -0,0 +1,7 @@ +package com.samplepackage + +object SampleName : SampleInterface.SampleName() + +interface SampleInterface { + open class SampleName +} diff --git a/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-interface-with-the-same-name.kttest b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-interface-with-the-same-name.kttest new file mode 100644 index 0000000000..65ee2139a6 --- /dev/null +++ b/lib/src/integrationTest/kotlin/com/lemonappdev/konsist/core/declaration/koparent/snippet/forkosourcedeclarationprovider/object-with-parent-interface-with-the-same-name.kttest @@ -0,0 +1,7 @@ +package com.samplepackage + +object SampleName : SampleInterface.SampleName + +interface SampleInterface { + interface SampleName +} diff --git a/lib/src/main/kotlin/com/lemonappdev/konsist/core/declaration/KoParentDeclarationCore.kt b/lib/src/main/kotlin/com/lemonappdev/konsist/core/declaration/KoParentDeclarationCore.kt index 925ad60e96..2b271be478 100644 --- a/lib/src/main/kotlin/com/lemonappdev/konsist/core/declaration/KoParentDeclarationCore.kt +++ b/lib/src/main/kotlin/com/lemonappdev/konsist/core/declaration/KoParentDeclarationCore.kt @@ -105,14 +105,13 @@ internal class KoParentDeclarationCore( if (import.alias != null) { import.alias?.name == innerName } else { - import.name.substringAfterLast(".") == innerName + import.name.substringAfterLast(".") == outerName } } val fullyQualifiedName = - import - ?.name - ?: (containingFile.packagee?.name + "." + name) + import?.name + ?: "${containingFile.packagee?.name?.let { "$it." } ?: ""}$name" val isAlias = import?.alias != null diff --git a/lib/src/main/kotlin/com/lemonappdev/konsist/core/model/DataCore.kt b/lib/src/main/kotlin/com/lemonappdev/konsist/core/model/DataCore.kt index b69a90df85..cc7adf2423 100644 --- a/lib/src/main/kotlin/com/lemonappdev/konsist/core/model/DataCore.kt +++ b/lib/src/main/kotlin/com/lemonappdev/konsist/core/model/DataCore.kt @@ -60,9 +60,6 @@ fun getClass( ?: containingFile .classes() .firstOrNull { decl -> decl.fullyQualifiedName == declarationQualifiedName } - ?: containingFile - .classes() - .firstOrNull { decl -> decl.name == name } } fun getInterface( @@ -84,9 +81,6 @@ fun getInterface( ?: containingFile .interfaces() .firstOrNull { decl -> decl.fullyQualifiedName == declarationQualifiedName } - ?: containingFile - .interfaces() - .firstOrNull { decl -> decl.name == name } } fun getObject( @@ -108,9 +102,6 @@ fun getObject( ?: containingFile .objects() .firstOrNull { decl -> decl.fullyQualifiedName == declarationQualifiedName } - ?: containingFile - .objects() - .firstOrNull { decl -> decl.name == name } } fun getTypeAlias(