thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jano Svitok (Jira)" <j...@apache.org>
Subject [jira] [Updated] (THRIFT-5138) Swift generator does not escape keywords properly
Date Fri, 13 Mar 2020 15:08:00 GMT

     [ https://issues.apache.org/jira/browse/THRIFT-5138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jano Svitok updated THRIFT-5138:
--------------------------------
    Description: 
1. For field `protocol` in a struct:
*generated:*
{code:swift}
    try proto.validateValue(protocol, named: "protocol")
{code}

*expected:*
{code:swift}
    try proto.validateValue(`protocol`, named: "protocol")
{code}

2. Swift allows any keyword to be used as identifier if you escape it, so lang_keywords()
should return empty set.
Adjust keyword test appropriately.

3. kewords_(lang_keywords()) initialization in t_generator.h does not work. Virtual method
call from base class constructor. This mechanism is used for Python and Swift. Fixing this
issue changes list of reserved words for Python and Swift (breaking change).

  was:
For field `protocol` in a struct:
*generated:*
{code:swift}
    try proto.validateValue(protocol, named: "protocol")
{code}

*expected:*
{code:swift}
    try proto.validateValue(`protocol`, named: "protocol")
{code}

Also, swift allows any keyword to be used as identifier if you escape it, so lang_keywords()
should return empty set.
Adjust keyword test appropriately.


> Swift generator does not escape keywords properly
> -------------------------------------------------
>
>                 Key: THRIFT-5138
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5138
>             Project: Thrift
>          Issue Type: Bug
>          Components: Swift - Compiler
>    Affects Versions: 0.14.0
>            Reporter: Jano Svitok
>            Assignee: Jano Svitok
>            Priority: Major
>              Labels: breaking_change
>
> 1. For field `protocol` in a struct:
> *generated:*
> {code:swift}
>     try proto.validateValue(protocol, named: "protocol")
> {code}
> *expected:*
> {code:swift}
>     try proto.validateValue(`protocol`, named: "protocol")
> {code}
> 2. Swift allows any keyword to be used as identifier if you escape it, so lang_keywords()
should return empty set.
> Adjust keyword test appropriately.
> 3. kewords_(lang_keywords()) initialization in t_generator.h does not work. Virtual method
call from base class constructor. This mechanism is used for Python and Swift. Fixing this
issue changes list of reserved words for Python and Swift (breaking change).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message