[cfe-dev] clang crashes on (non-template) friend declaration.
Enea Zaffanella
zaffanella at cs.unipr.it
Sat Jan 30 01:14:44 PST 2010
John McCall wrote:
[...]
> Sounds like a new bug. Please go ahead and file this, and I'll get
> to it soon, probably within the next week or so. Thanks!
>
> John.
>
We have found other errors related to non-template friend declarations.
====================
struct F {};
struct S {
friend F::F();
friend F::~F();
};
====================
$ llvm/Debug/bin/clang++ -fsyntax-only bug.cc
bug.cc:4:15: error: expected member name or ';' after declaration specifiers
friend F::F();
~~~~~~~~~~~ ^
bug.cc:5:13: error: definition of implicitly declared destructor
friend F::~F();
^
bug.cc:1:8: note: previous implicit declaration is here
struct F {};
^
3 diagnostics generated.
=====================
In the first case, it looks as if the constructor name is misinterpreted
to be part of the name qualifiers (maybe due to class name injection?).
The buggy error diagnostic is still there if the constructor is declared
explicitly or if a different constructor is used.
In the second case, the friend declaration is misinterpreted as if it
was defining the implicit constructor. The same buggy error diagnostic
is obtained if the implicit copy assignment operator is declared friend.
Should we add this example to the bug report just created?
Cheers,
Enea Zaffanella.
More information about the cfe-dev
mailing list