Skip to content

Commit d8e2fb0

Browse files
committed
Add more
1 parent 594e529 commit d8e2fb0

1 file changed

Lines changed: 29 additions & 28 deletions

File tree

compiler/src/main/kotlin/dev/zacsweers/metro/compiler/ir/transformers/ContributionBindsFunctionsIrTransformer.kt

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -78,40 +78,41 @@ internal class ContributionTransformer(
7878
*/
7979
private val contributionsByClass = mutableMapOf<ClassId, Map<ClassId, Set<Contribution>>>()
8080

81-
override fun visitClass(declaration: IrClass, data: IrContributionData): IrStatement {
82-
// TODO others?
83-
val shouldSkip = declaration.isLocal
84-
if (shouldSkip) {
85-
return declaration
86-
}
81+
override fun visitClass(declaration: IrClass, data: IrContributionData): IrStatement =
82+
trace("Visit ${declaration.name}") {
83+
// TODO others?
84+
val shouldSkip = declaration.isLocal
85+
if (shouldSkip) {
86+
return@trace declaration
87+
}
8788

88-
trace("Transform ${declaration.name} bindings") {
89-
val isBindingContainer by memoize { declaration.isBindingContainer() }
89+
trace("Transform ${declaration.name} bindings") {
90+
val isBindingContainer by memoize { declaration.isBindingContainer() }
9091

91-
// First, perform transformations
92-
if (declaration.origin == Origins.MetroContributionClassDeclaration) {
93-
trace("Transform and collect contribution") {
94-
val metroContributionAnno =
95-
declaration.findAnnotations(Symbols.ClassIds.metroContribution).first()
96-
val scope = metroContributionAnno.requireScope()
97-
trace("Transform class") { transformContributionClass(declaration, scope) }
98-
trace("Collect contribution data") {
99-
collectContributionDataFromContribution(declaration, data, scope, isBindingContainer)
92+
// First, perform transformations
93+
if (declaration.origin == Origins.MetroContributionClassDeclaration) {
94+
trace("Transform and collect contribution") {
95+
val metroContributionAnno =
96+
declaration.findAnnotations(Symbols.ClassIds.metroContribution).first()
97+
val scope = metroContributionAnno.requireScope()
98+
trace("Transform class") { transformContributionClass(declaration, scope) }
99+
trace("Collect contribution data") {
100+
collectContributionDataFromContribution(declaration, data, scope, isBindingContainer)
101+
}
102+
}
103+
} else if (
104+
declaration.isAnnotatedWithAny(context.metroSymbols.classIds.graphLikeAnnotations)
105+
) {
106+
trace("Transform graphlike") { transformGraphLike(declaration) }
107+
} else if (isBindingContainer) {
108+
trace("Collect contributions from container") {
109+
collectContributionDataFromContainer(declaration, data)
100110
}
101-
}
102-
} else if (
103-
declaration.isAnnotatedWithAny(context.metroSymbols.classIds.graphLikeAnnotations)
104-
) {
105-
trace("Transform graphlike") { transformGraphLike(declaration) }
106-
} else if (isBindingContainer) {
107-
trace("Collect contributions from container") {
108-
collectContributionDataFromContainer(declaration, data)
109111
}
110112
}
111-
}
112113

113-
return super.visitClass(declaration, data)
114-
}
114+
return@trace super.visitClass(declaration, data)
115+
}
115116

116117
private fun collectContributionDataFromContribution(
117118
declaration: IrClass,

0 commit comments

Comments
 (0)