I wrote a simple dsl with extension functions to b...
# dsl
m
I wrote a simple dsl with extension functions to build an object hierarchy for objects written in java. I want to use the
@DslMarker
annotation to limit the scope of the blocks but there doesn’t seem to be a way to do it without writing unnecessary builders (unneccessary since the java fields are mutable). Is there another solution to this or will I have to write builders to limit scope?
b
It's a good idea to write builders anyway. Keeping models and builders separate helps when writing the actual functional part of your DSL. But one way to make your Java builders work for you in a Kotlin DSL is to make them extend a Kotlin abstract class that's annotated with your DSL annotation class. As long as your Java builder extends a Kotlin class or interface that's annotated with your annotation class, you should be good to go.