openrewrite / rewrite-kotlin

Work-in-progress implementation of Kotlin language support for OpenRewrite.
Apache License 2.0
38 stars 11 forks source link

Type validation enhancement: Track the owner of identifiers to validate aliases. #545

Open traceyyoshima opened 6 months ago

traceyyoshima commented 6 months ago
import java.util.regex.Pattern.CASE_INSENSITIVE as i

class A {
    val f = arrayOf(i)
}

Type validation on identifiers compares the name of JavaType.Variable on J.Identifier#fieldType to ensure the names match. Type aliases fail the comparison and cause a test failure.

We can track the scope of a variable through a stack so that the identifiers are compared to the applicable field type when it exists. The changes will help to reveal when types are not correctly updated, and allow us to apply the correct validation on aliases.