[llvm-bugs] [Bug 48196] New: improve diagnostic for "new func()"
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Nov 16 15:00:30 PST 2020
https://bugs.llvm.org/show_bug.cgi?id=48196
Bug ID: 48196
Summary: improve diagnostic for "new func()"
Product: clang
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: -New Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: nick at wasmer.io
CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org,
neeilans at live.com, richard-llvm at metafoo.co.uk
Testcase:
class Foo {
Foo() = default;
public:
static Foo make();
};
Foo *test() {
return new Foo::make();
}
Clang emits:
<source>:8:19: error: no type named 'make' in 'Foo'
return new Foo::make();
~~~~~^
1 error generated.
Compiler returned: 1
Which was quite confusing at first. There is a 'make' in 'Foo'. Once I
confirmed that, I read the message again. Why does clang demand a type, it's
not like I said typename? What is going on. The error doesn't point at the real
bug, the extra 'new'.
In general when emitting a diagnostics with "there is no X named Y in Z" please
point out that there is a Y in Z that isn't an X. Also when possible please
point to the reason why we're expecting a type (in this case, the 'new'). In
this specific case, it would be magical if clang tried to typo-correct removing
'new' to see if the function call expression would parse and produce an
expression of the correct type.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20201116/391fff8d/attachment-0001.html>
More information about the llvm-bugs
mailing list