Jens Geyer created THRIFT-6371:
----------------------------------

             Summary: Lua generator writes a uuid constant without quotes
                 Key: THRIFT-6371
                 URL: https://issues.apache.org/jira/browse/THRIFT-6371
             Project: Thrift
          Issue Type: Bug
          Components: Lua - Compiler
    Affects Versions: 0.24.0
            Reporter: Jens Geyer


{{\-\-gen lua}} writes the value of a {{uuid}} constant into the generated code 
without quotes, so the generated file does not load. The {{TYPE_UUID}} case in 
[t_lua_generator.cc:277|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_lua_generator.cc#L277]
 streams {{value\->get_string()}} straight into {{TUUIDfromString(...)}}, while 
{{TUUIDfromString()}} in {{lib/lua/Thrift.lua}} expects a string.

{code}
const uuid U = "00000000-4444-cccc-ffff-0123456789ab"
{code}
{noformat}
$ thrift --gen lua u.thrift && grep '^U' gen-lua/u_constants.lua
U = TUUIDfromString(00000000-4444-cccc-ffff-0123456789ab)
$ luac -p gen-lua/u_constants.lua
luac: gen-lua/u_constants.lua:11: malformed number near '0123456789ab'
{noformat}

With the value quoted, 
{{TUUIDfromString('00000000-4444-cccc-ffff-0123456789ab')}}, the file compiles. 
Checked with the 0.25.0 compiler and Lua 5.4.4 in the {{thrift:jammy}} image. 
The line is the same on master, release/0.25.0 and release/0.24.0; it dates 
from the uuid support for Lua (THRIFT-5804, 0.22.0).

String constants in the same function are written without escaping as well; 
that part is covered by THRIFT-6236.

_Drafted with AI assistance (Claude Opus 5.5)._




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

Reply via email to