Sylwester Lachiewicz created THRIFT-6340:
--------------------------------------------

             Summary: Kotlin generator names a required field's backing 
property inconsistently when the field name is a Kotlin keyword
                 Key: THRIFT-6340
                 URL: https://issues.apache.org/jira/browse/THRIFT-6340
             Project: Thrift
          Issue Type: Bug
          Components: Kotlin - Compiler
    Affects Versions: 0.25.0
            Reporter: Sylwester Lachiewicz


For a required field, 
[t_kotlin_generator.cc:1129|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc#L1129]
 declares the private backing property as {{_}} plus the raw field name, while 
the getter at [line 
1163|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc#L1163]
 and the other readers reference {{_}} plus {{kotlin_safe_name(name)}}, which 
backtick-quotes a keyword. For a field named after a Kotlin keyword the two 
names differ and the class does not compile.

{code}
struct S { 1: required i32 val }
{code}
{noformat}
$ thrift --gen kotlin -out kt repro.thrift && grep -n "_val\|_\`val\`" kt/S.kt
9:  private var _val: kotlin.Int? = null,
12:  val `val`: kotlin.Int get() = _`val`!!
{noformat}

{{_`val`}} is not a valid identifier either. Both sides should use one name, 
for example {{_}} plus the raw name, since the underscore prefix already avoids 
the keyword. Reproduced on master at 3af0cfff1.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to