Affects Version/s: 0.11.0
Fix Version/s: None
Component/s: C++ - Compiler
Thrift 0.10.0 tested, but I don't see a change in 0.11.0. Fedora 25. gcc 6.4.1. x86_64.
Support was added for self-referential objects in in https://github.com/apache/thrift/pull/84 "Tree/Recursive struct support in thrift".
The tests cover objects that are co-recursive, objects that have lists of themselves, etc. But there's no test for optional self-containment e.g.
This works fine for languages like Java and Go. But in C++ it generates nonsensical code that cannot compile because it contains a by-value member of its self and a separate isset member.
For example, from opentracing jaeger's IDL:
Compilation fails with
I'd argue that the __isset model is not ideal, and a std::expected-like "optional" or "maybe" construct would be a lot better. But presumably there are historical reasons for that.
The simplest correct solution would be to generate