bumptech / glide

An image loading and caching library for Android focused on smooth scrolling

Home Page:https://bumptech.github.io/glide/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inconsistent Handling of @GlideModule Annotation Between KSP and KAPT

blipinsk opened this issue · comments

There's a difference in the way KSP handles @GlideModule annotation in comparison to KAPT.

  • KSP: the exact class which is annotated with @GlideModule must extend AppGlideModule or LibraryGlideModule
  • KAPT: a parent class of the one annotated with @GlideModule can extend AppGlideModule or LibraryGlideModule

Glide Version: 4.16.0

Issue details / Repro steps / Use case background:

open class BaseGlideAppModule : AppGlideModule() {

    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
      // ... some common behavior (e.g. reused across build variants of an android app)
    }
}
@GlideModule
class GlideModule : BaseGlideAppModule() {

    override fun registerComponents(
        context: Context,
        glide: Glide,
        registry: Registry,
    ) {
        super.registerComponents(context, glide, registry)
        // ... registering something
    }
}

☝️ this compiles fine when using the compiler with KAPT (kapt("com.github.bumptech.glide:compiler:4.16.0")), but fails when using KSP (ksp("com.github.bumptech.glide:ksp:4.16.0")) with 👇

Stack trace / LogCat:

[ksp] @GlideModule annotated classes must implement AppGlideModule or LibraryGlideModule