
Summary: This patch would cause clang emit more diagnostics, but it is much better than https://reviews.llvm.org/D76831 ```cpp struct A { A(int); ~A() = delete; }; void k() { A a; } ``` before the patch: /tmp/t3.cpp:24:5: error: no matching constructor for initialization of 'A' A a; ^ /tmp/t3.cpp:20:3: note: candidate constructor not viable: requires 1 argument, but 0 were provided A(int); ^ /tmp/t3.cpp:19:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided struct A { After the patch: /tmp/t3.cpp:24:5: error: no matching constructor for initialization of 'A' A a; ^ /tmp/t3.cpp:20:3: note: candidate constructor not viable: requires 1 argument, but 0 were provided A(int); ^ /tmp/t3.cpp:19:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided struct A { ^ /tmp/t3.cpp:24:5: error: attempt to use a deleted function A a; ^ /tmp/t3.cpp:21:3: note: '~A' has been explicitly marked deleted here ~A() = delete; Reviewers: sammccall Reviewed By: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77395
16 lines
412 B
C++
16 lines
412 B
C++
struct Foo { Foo(int); int abc; };
|
|
|
|
void test1() {
|
|
Foo foo;
|
|
foo.;
|
|
// RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:5:7 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
|
|
// CHECK-CC1: COMPLETION: abc
|
|
}
|
|
|
|
void test2() {
|
|
Foo foo = garbage();
|
|
foo.;
|
|
// RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:12:7 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
|
|
// CHECK-CC2: COMPLETION: abc
|
|
}
|