saveourtool/diktat

`WRONG_NAME_OF_VARIABLE_INSIDE_ACCESSOR` false positive

Open

#1935 aperta il 1 lug 2024

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Kotlin (40 fork)github user discovery
buggood first issue

Metriche repository

Star
 (571 star)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

Describe the bug

Here's a piece of code I have:

public abstract class Observable<T> {
    public abstract val value: T

    public abstract fun subscribe(subscriber: Subscriber<T>): Subscription

    public inline fun <R> transform(crossinline block: Transform<T, R>): Observable<R> =
        object : Observable<R>() {
            override fun subscribe(subscriber: Subscriber<R>): Subscription =
                this@Observable.subscribe { subscriber(block(it)) }

            @Suppress("WRONG_NAME_OF_VARIABLE_INSIDE_ACCESSOR")
            override val value: R
                get() = block(this@Observable.value) // I can't use the `field` property here
        }

    public companion object
}

The problem is diktat claims I have to use a field property instead of this@Observable.value which isn't technically possible in this case. Perhaps the case is non-trivial for the parser, and if I had used a named private class instead of an anonymous object, this could have been avoided, but I think I should point out that such snippets happen too.

Environment information

  • diktat version: 2.0.0
  • build tool (maven/gradle): Gradle
  • how is diktat run (CLI, plugin, etc.): plugin
  • kotlin version: 2.0.0
  • operating system: macOS Sonoma 14.3

Guida contributor