patch: clarify missing template arguments when parsing base specifier

Chandler Carruth chandlerc at google.com
Mon Aug 26 22:53:02 PDT 2013


I think this case has more problems than just verbosity...

On Mon, Aug 26, 2013 at 10:38 PM, Nick Lewycky <nlewycky at google.com> wrote:

> a.cc:1:56: error: no template named 'Foox'; did you mean 'Foo'?
> template <typename T> class Foo {}; class Bar : public Foox {};
> [point at 'Foox' suggest 'Foo']
>

Why does it assume Foox is a template?


> a.cc:1:29: note: 'Foo' declared here
> template <typename T> class Foo {}; class Bar : public Foox {};
> [point at 'Foo']
> a.cc:1:56: error: expected template argument list after template-id
> template <typename T> class Foo {}; class Bar : public Foox {};
> [point at 'Foox']
>

And given that we then hit this error, why do we even consider the Foo typo
correction? Do we prefer that over a "Fooxie" class due to shorter edit
distance? That doesn't seem right. I would intuitively expect the lack of
"<..." to be a stronger signal than any edit distance, and thus disqualify
template-ids from the typo correction candidate set.

-Chandler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130826/88268a3e/attachment.html>


More information about the cfe-commits mailing list