[llvm-dev] [CommandLine] Unable to implement a custom parser -- all marked final

Don Hinton via llvm-dev llvm-dev at lists.llvm.org
Thu Apr 18 14:02:49 PDT 2019


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>


More information about the llvm-dev mailing list