This revision was automatically updated to reflect the committed changes.
Closed by commit rGfe86dbb32da2: [clang]:  Remove assertion which checks 
explicit declaration (authored by gousemoodhin, committed by rsmith).
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83929/new/

https://reviews.llvm.org/D83929

Files:
  clang/lib/Sema/DeclSpec.cpp
  clang/test/Misc/explicit.cpp


Index: clang/test/Misc/explicit.cpp
===================================================================
--- /dev/null
+++ clang/test/Misc/explicit.cpp
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -std=c++20 %s -verify
+
+int foo ()  {
+  int b;
+  explicit( && b );  // expected-error{{conversion from 'void *' to 'bool' is 
not allowed in a converted constant expression}}
+                     // expected-error@-1{{'explicit' can only appear on 
non-static member functions}}
+                     // expected-error@-2{{use of undeclared label 'b'}}
+                     // expected-warning@-3{{declaration does not declare 
anything}}
+}
Index: clang/lib/Sema/DeclSpec.cpp
===================================================================
--- clang/lib/Sema/DeclSpec.cpp
+++ clang/lib/Sema/DeclSpec.cpp
@@ -1014,9 +1014,6 @@
                                        const char *&PrevSpec, unsigned &DiagID,
                                        ExplicitSpecifier ExplicitSpec,
                                        SourceLocation CloseParenLoc) {
-  assert((ExplicitSpec.getKind() == ExplicitSpecKind::ResolvedTrue ||
-          ExplicitSpec.getExpr()) &&
-         "invalid ExplicitSpecifier");
   // 'explicit explicit' is ok, but warn as this is likely not what the user
   // intended.
   if (hasExplicitSpecifier()) {


Index: clang/test/Misc/explicit.cpp
===================================================================
--- /dev/null
+++ clang/test/Misc/explicit.cpp
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -std=c++20 %s -verify
+
+int foo ()  {
+  int b;
+  explicit( && b );  // expected-error{{conversion from 'void *' to 'bool' is not allowed in a converted constant expression}}
+                     // expected-error@-1{{'explicit' can only appear on non-static member functions}}
+                     // expected-error@-2{{use of undeclared label 'b'}}
+                     // expected-warning@-3{{declaration does not declare anything}}
+}
Index: clang/lib/Sema/DeclSpec.cpp
===================================================================
--- clang/lib/Sema/DeclSpec.cpp
+++ clang/lib/Sema/DeclSpec.cpp
@@ -1014,9 +1014,6 @@
                                        const char *&PrevSpec, unsigned &DiagID,
                                        ExplicitSpecifier ExplicitSpec,
                                        SourceLocation CloseParenLoc) {
-  assert((ExplicitSpec.getKind() == ExplicitSpecKind::ResolvedTrue ||
-          ExplicitSpec.getExpr()) &&
-         "invalid ExplicitSpecifier");
   // 'explicit explicit' is ok, but warn as this is likely not what the user
   // intended.
   if (hasExplicitSpecifier()) {
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to