Don Hinton via llvm-dev
2019-Apr-18 20:44 UTC
[llvm-dev] [CommandLine] Unable to implement a custom parser -- all marked final
https://llvm.org/docs/CommandLine.html#writing-a-custom-parser describes how to implement a custom parser, but they're all marked `final`, so I can't inherit. Is there a reason for this? If not, I'll submit patch with tests. thanks... don -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190418/db418b9a/attachment.html>
David Blaikie via llvm-dev
2019-Apr-18 20:56 UTC
[llvm-dev] [CommandLine] Unable to implement a custom parser -- all marked final
Yeah, I think I did this a while back (& you're possibly not the only one who's hit this - might be worth a search on llvm-dev for previous threads). If you check the commit history, I think my original motivation was cleaning up the virtual dtor that wasn't used in LLVM by making the base class's dtor protected, and the derived classes final. It could be made virtual instead of protected/final - but without any use in LLVM, I'm not sure it's worth exposing this extension point & perhaps just updating the documentation is the best thing? On Thu, Apr 18, 2019 at 1:45 PM Don Hinton via llvm-dev <llvm-dev at lists.llvm.org> wrote:> > https://llvm.org/docs/CommandLine.html#writing-a-custom-parser describes how to implement a custom parser, but they're all marked `final`, so I can't inherit. > > Is there a reason for this? If not, I'll submit patch with tests. > > thanks... > don > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Don Hinton via llvm-dev
2019-Apr-18 21:02 UTC
[llvm-dev] [CommandLine] Unable to implement a custom parser -- all marked final
Hi David: I'd actually like to use a custom parser in a tool I'm developing, parsing YAML files. The partial fix for my purposes was: --- a/llvm/include/llvm/Support/CommandLine.h +++ b/llvm/include/llvm/Support/CommandLine.h @@ -1044,7 +1044,7 @@ extern template class basic_parser<float>; //-------------------------------------------------- // parser<std::string> // -template <> class parser<std::string> final : public basic_parser<std::string> { +template <> class parser<std::string> : public basic_parser<std::string> { public: parser(Option &O) : basic_parser(O) {} @@ -1062,6 +1062,8 @@ public: // An out-of-line virtual method to provide a 'home' for this class. void anchor() override; + + virtual ~parser() = default; }; If that's acceptable, I submit a patch. thanks... don On Thu, Apr 18, 2019 at 1:56 PM David Blaikie <dblaikie at gmail.com> wrote:> Yeah, I think I did this a while back (& you're possibly not the only > one who's hit this - might be worth a search on llvm-dev for previous > threads). > > If you check the commit history, I think my original motivation was > cleaning up the virtual dtor that wasn't used in LLVM by making the > base class's dtor protected, and the derived classes final. > > It could be made virtual instead of protected/final - but without any > use in LLVM, I'm not sure it's worth exposing this extension point & > perhaps just updating the documentation is the best thing? > > On Thu, Apr 18, 2019 at 1:45 PM Don Hinton via llvm-dev > <llvm-dev at lists.llvm.org> wrote: > > > > https://llvm.org/docs/CommandLine.html#writing-a-custom-parser > describes how to implement a custom parser, but they're all marked `final`, > so I can't inherit. > > > > Is there a reason for this? If not, I'll submit patch with tests. > > > > thanks... > > don > > > > > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190418/c93ea4a5/attachment.html>