Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-4496

Dealing with language keywords in Thrift (e.g. service method names)

VotersStop watchingWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.12.0
    • Component/s: Compiler (General)
    • Labels:
      None
    • Patch Info:
      Patch Available
    • Flags:
      Patch

      Description

      Apache Thrift compiler doesn't allow to use keywords in any of supported languages as field names. However, there are other compilers, like Scrooge, which do allow using some keywords as field identifiers, which leads to incompatibility.

      Assume we had a service with 'delete' method, with Java code generated by Scrooge. Now we'd like to generate Python code with Apache Thrift, but encounter an error because of the 'delete' keyword.

      I understand that using only Apache Thrift compiler, a user will never encounter this problem, but I think enabling keywords by request seems feasible.

      Proposal

      It's possible to tweak keywords on code generation stage, e.g. use 'delete_' as a name of a generated function instead of 'delete', then use the original method name for a protocol message: writeMethodBegin('delete').

      This feature could be enabled with an additional flag, e.g. --screen-keywords.

      I have a draft for python generator here https://github.com/nsrtvwls/thrift

      The questions are, is this functionality welcome? If yes, would it require to have it supported for all languages?

        Attachments

        Issue Links

          Activity

            People

            • Assignee:
              jking3 James E. King III
              Reporter:
              nsrtvwls Vera Filippova

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment