Skip to content

Cannot extend Kotlin DSL #374

Open
Open
@bmorris591

Description

@bmorris591

With reference to #275 and #253

I am trying to create a simple extension to enable using r2bdc-migrate, my starting point it

class R2dbcMigrationDsl(private val init: R2dbcMigrationDsl.() -> Unit) : AbstractDsl() {

    override fun initialize(context: GenericApplicationContext) {
        super.initialize(context)
        init()

        val properties = r2dbcMigrationProperties()

        R2dbcMigrationInitialiser(properties).initialize(context)
    }

    fun r2dbcMigrationProperties(): R2dbcMigrateProperties =
        let { self ->
            R2dbcMigrateProperties().apply {

            }
        }
}

fun R2dbcDsl.migrate(dsl: R2dbcMigrationDsl.() -> Unit = {}) {
    R2dbcMigrationDsl(dsl).initialize(context)
}

I have a compilation error at .initialize(context) because context is internal.

snip/migrate/R2dbcMigrationDsl.kt:29:39
Kotlin: Cannot access 'context': it is internal in 'R2dbcDsl'

I think the context needs to become more visible to allow for DSLs to extend and use the idiom that Kofu uses.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions