Thanks guys - much appreciated. I'll take the steps suggested:
1. Add "type" as a reserved word to thrift.ll 2. Change the test to use __type (or something similar) I've already done "2" - and gone far enough to know that maps of f64s are definitely a pain point in Rust that I'll have to figure out. Thanks! Allen Terminal Musings: http://www.allengeorge.com/ Raft in Java: https://github.com/allengeorge/libraft/ Twitter: https://twitter.com/allenageorge/ On Fri, Nov 4, 2016 at 5:04 PM, Randy Abernethy <[email protected]> wrote: > Hey Allen, > > Also excited to hear about the Rust work! Agree with Jake, on the pain > level associated with adding type as a keyword. However, type is probably a > pretty good word to add to the keyword list if we were to add one. > > Similar/Identical keywords: > > - Rust, Go, Delphi, Scala: type > - C#, ECMAScript 6 typeof > - C++ typedef, typeid, typename > > > Obviously some languages avoid the problem through context (like Go and > Delphi). Perhaps a reasonable approach might be to deprecate it in IDL > today, change the tests to use __type or some such and soldier on with the > Rust addition? > > -Randy > > On Fri, Nov 4, 2016 at 1:34 PM, Jake Farrell <[email protected]> wrote: > >> Hey Allen >> Really cool to hear you are working on Rust support, know that others would >> appreciate having it available. Currently "type" is not a listed reserved >> word in the compiler/cpp/src/thrift/thriftl.ll, but due to rust using it >> that way you would have to add it to the reserved list and modify the test >> to no longer support "type" as an identifier. >> >> This would cause a lot of pain for others as "type" is a pretty commonly >> used term and would break exiting expected behavior for anyone using the >> identifier "type" in their idl today. >> >> -Jake >> >> >> >> On Fri, Nov 4, 2016 at 4:07 PM, Allen George <[email protected]> >> wrote: >> >> > Hi Jim, >> > >> > FWIW, the Thrift file I'm talking about is "TestThrift.thrift" that's >> > used as part of the cross-platform tests. And, you're right: I didn't >> > specify my language. I'm *trying* to implement Thrift support in Rust. >> > I've got part of the code-gen working, and part of the binary protocol >> > as well, but there's obviously still a lot of work to do. "type" is >> > used to define a typedef (aka. type alias) in Rust, which means that >> > the "Bonk" struct (the first struct there) doesn't work anymore. >> > >> > Allen >> > Terminal Musings: http://www.allengeorge.com/ >> > Raft in Java: https://github.com/allengeorge/libraft/ >> > Twitter: https://twitter.com/allenageorge/ >> > >> > >> > On Fri, Nov 4, 2016 at 12:35 PM, Jim King <[email protected]> >> wrote: >> > > The use of "type" as a field name seems suspect to me in a test thrift >> > file for the reason you described. >> > > >> > > This is similar to the use of "what" that was in some example thrift >> > files exception structures before we added what() to the C++ library, >> > breaking those examples. Fortunately one can rename the field if using >> > BinaryProtocol because it only cares about field ordinals, not names, and >> > remain backwards compatible. >> > > >> > > Perhaps we need to update the list of reserved keywords and enforce >> them? >> > > Another possibility is to change the code generator to generate a field >> > in a structure that has a different name like "__type", however would the >> > definition of "getType()" then fail in your language? >> > > >> > > By the way, what is your target language? You didn't specify. >> > > >> > > - Jim >> > > >> > > -----Original Message----- >> > > From: Allen George [mailto:[email protected]] >> > > Sent: Thursday, November 03, 2016 10:00 PM >> > > To: [email protected] >> > > Subject: What's the right approach to dealing with reserved words in >> > thrift structs? >> > > >> > > The struct "Bonk" (in ThriftTest.thrift) uses a reserved keyword "type" >> > in my target language. What's the right approach do dealing with reserved >> > keywords during code generation? Obviously I'd prefer that "type" wasn't >> > used at all, but...should I turn it into another name? Should I simply >> fail >> > instead? >> > > >> > > Thanks, >> > > Allen >> > > >> > > Terminal Musings: http://www.allengeorge.com/ Raft in Java: >> > https://github.com/allengeorge/libraft/ >> > > Twitter: https://twitter.com/allenageorge/ >> > > ------------------------------------------------------------ >> > --------------------------- >> > > PRIVACY STATEMENT: >> > > This message is a PRIVATE communication. This message and all >> > attachments are a private communication sent by SimpliVity and are >> > considered to be confidential or protected by privilege. If you are not >> the >> > intended recipient, you are hereby notified that any disclosure, copying, >> > distribution or use of the information contained in or attached to this >> > message is strictly prohibited. Please notify the sender of the delivery >> > error by replying to this message, and then delete it from your system. >> > > ------------------------------------------------------------ >> > --------------------------- >> > >>
