saveourtool/diktat

`WRONG_NAME_OF_VARIABLE_INSIDE_ACCESSOR` false positive

Open

#1,935 opened on Jul 1, 2024

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Kotlin (40 forks)github user discovery
buggood first issue

Repository metrics

Stars
 (571 stars)
PR merge metrics
 (PR metrics pending)

Description

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

Contributor guide