[ 
https://issues.apache.org/jira/browse/THRIFT-153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12689244#action_12689244
 ] 

David Reiss commented on THRIFT-153:
------------------------------------

Awesome patch.  I made a bunch of small changes like adding escapes, fixing a 
few generators, making the call sites more uniform, etc.  I also changed the 
way get_escaped_string is called.  I like this way better, and you seemed 
unsure about the old way too.  I also eliminated your vim comment.  My guess is 
that you had the wrong filetype set because Vim defaults to "LifeLines" for 
".ll", even though it concedes that it is also used for Lex for C++.  Let me 
know if the modeline patch doesn't fix it.

> Invalid code generated for string constants containing single quotes (')
> ------------------------------------------------------------------------
>
>                 Key: THRIFT-153
>                 URL: https://issues.apache.org/jira/browse/THRIFT-153
>             Project: Thrift
>          Issue Type: Bug
>          Components: Compiler (Python)
>            Reporter: Dave Engberg
>         Attachments: 
> 0001-THRIFT-153.-Proper-handling-of-strings-with-escapes.patch, 
> 0002-Make-vim-recognize-that-thriftl.ll-is-Lex-source.patch, 
> t_py_generator.cc.diff, thrift-const-escaping.thrift
>
>
> If I declare a constant in a Thrift iDL like this:
> const string HAMMER_TIME = "Can't touch this";
> The generated Python sources generate a constant like this:
> HAMMER_TIME = 'Can't touch this';
> This doesn't work because the apostrophe terminates the string constant.
> Since Python supports string constants using either ' or ", an easy fix is 
> just to use " around Python constants instead:
> Index: compiler/cpp/src/generate/t_py_generator.cc
> ===================================================================
> --- compiler/cpp/src/generate/t_py_generator.cc       (revision 701711)
> +++ compiler/cpp/src/generate/t_py_generator.cc       (working copy)
> @@ -363,7 +363,7 @@
>      t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
>      switch (tbase) {
>      case t_base_type::TYPE_STRING:
> -      out << "'" << value->get_string() << "'";
> +      out << '"' << value->get_string() << '"';
>        break;
>      case t_base_type::TYPE_BOOL:
>        out << (value->get_integer() > 0 ? "True" : "False");

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to