Skip to content

Commit 2c0f894

Browse files
authored
Merge pull request #41 from evant/bugfix/scoped-alias
Fixed bug with scoped type alias variable naming
2 parents d0a5bbc + be840c2 commit 2c0f894

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

integration-tests/src/test/kotlin/me/tatarka/inject/test/TypeAliasTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ typealias NamedFoo2 = NamedFoo
2929
@Provides fun foo2(): NamedFoo2 = NamedFoo("2")
3030
}
3131

32+
@CustomScope @Component abstract class ScopedConstructorAliasedComponent {
33+
abstract val aliasedFoo: AliasedFoo
34+
35+
@CustomScope @Provides fun foo1(): NamedFoo1 = NamedFoo("1")
36+
@CustomScope @Provides fun foo2(): NamedFoo2 = NamedFoo("2")
37+
}
38+
3239
@Target(AnnotationTarget.TYPE)
3340
annotation class FooAnnotation
3441

@@ -63,4 +70,14 @@ class QualifierTest {
6370
assertThat(component.aliasedFoo.foo2.name).isEqualTo("2")
6471
}
6572
}
73+
74+
@Test
75+
fun generates_a_component_that_constructs_different_scoped_values_based_on_the_type_alias_name() {
76+
val component = ScopedConstructorAliasedComponent::class.create()
77+
78+
assertAll {
79+
assertThat(component.aliasedFoo.foo1.name).isEqualTo("1")
80+
assertThat(component.aliasedFoo.foo2.name).isEqualTo("2")
81+
}
82+
}
6683
}

kotlin-inject-compiler-core/src/main/kotlin/me/tatarka/inject/compiler/InjectGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class InjectGenerator(provider: AstProvider, private val options: Options) :
8080

8181
addProperty(
8282
PropertySpec.builder(
83-
type.asElement().simpleName.asScopedProp(),
83+
type.simpleName.asScopedProp(),
8484
type.asTypeName()
8585
).apply {
8686
if (context.scopeInterface != null) {
@@ -143,7 +143,7 @@ class InjectGenerator(provider: AstProvider, private val options: Options) :
143143
for (type in context.collector.scoped) {
144144
addProperty(
145145
PropertySpec.builder(
146-
type.asElement().simpleName.asScopedProp(),
146+
type.simpleName.asScopedProp(),
147147
type.asTypeName()
148148
).build()
149149
)
@@ -335,7 +335,7 @@ class InjectGenerator(provider: AstProvider, private val options: Options) :
335335
if (result.name != null) {
336336
codeBlock.add("(%L as Inject%N).", result.name, result.astClass.name)
337337
}
338-
codeBlock.add("%N", key.type.asElement().simpleName.asScopedProp())
338+
codeBlock.add("%N", key.type.simpleName.asScopedProp())
339339
return codeBlock.build()
340340
}
341341

0 commit comments

Comments
 (0)