Author: Gousemoodhin Nadaf Date: 2020-08-20T18:15:43-07:00 New Revision: fe86dbb32da21e1c8c6eb4864a00f61ed3d003a3
URL: https://github.com/llvm/llvm-project/commit/fe86dbb32da21e1c8c6eb4864a00f61ed3d003a3 DIFF: https://github.com/llvm/llvm-project/commit/fe86dbb32da21e1c8c6eb4864a00f61ed3d003a3.diff LOG: [clang]: Remove assertion which checks explicit declaration explicit keyword is declared outside of class is invalid, invalid explicit declaration is handled inside DiagnoseFunctionSpecifiers() function. To avoid compiler crash in case of invalid explicit declaration, remove assertion. Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D83929 Added: clang/test/Misc/explicit.cpp Modified: clang/lib/Sema/DeclSpec.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp index f553b5ca6079..a3f770bb00ad 100644 --- a/clang/lib/Sema/DeclSpec.cpp +++ b/clang/lib/Sema/DeclSpec.cpp @@ -1014,9 +1014,6 @@ bool DeclSpec::setFunctionSpecExplicit(SourceLocation Loc, 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()) { diff --git a/clang/test/Misc/explicit.cpp b/clang/test/Misc/explicit.cpp new file mode 100644 index 000000000000..b544fc437f05 --- /dev/null +++ b/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}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits