Author: Haojian Wu Date: 2022-06-07T10:34:37+02:00 New Revision: 90dab0473ef0141c3cdbacc9990f98db8c956f90
URL: https://github.com/llvm/llvm-project/commit/90dab0473ef0141c3cdbacc9990f98db8c956f90 DIFF: https://github.com/llvm/llvm-project/commit/90dab0473ef0141c3cdbacc9990f98db8c956f90.diff LOG: [pseudo] Handle the language predefined identifier __func__ The clang lexer lexes it as a dedicated token kind (rather than identifier), we extend the grammar to handle it. Differential Revision: https://reviews.llvm.org/D126996 Added: clang-tools-extra/pseudo/test/cxx/predefined-identifier.cpp Modified: clang-tools-extra/pseudo/lib/cxx.bnf Removed: ################################################################################ diff --git a/clang-tools-extra/pseudo/lib/cxx.bnf b/clang-tools-extra/pseudo/lib/cxx.bnf index 16d639bc7770..f0d666d5b54e 100644 --- a/clang-tools-extra/pseudo/lib/cxx.bnf +++ b/clang-tools-extra/pseudo/lib/cxx.bnf @@ -750,3 +750,8 @@ export-keyword := IDENTIFIER #! split it into two tokens to make the GLR parser aware of the nested-template #! case. greatergreater := > > + +#! C++ predefined identifier, __func__ [dcl.fct.def.general] p8 +#! FIXME: add other (MSVC, GNU extension) predefined identifiers. +primary-expression := predefined-expression +predefined-expression := __FUNC__ diff --git a/clang-tools-extra/pseudo/test/cxx/predefined-identifier.cpp b/clang-tools-extra/pseudo/test/cxx/predefined-identifier.cpp new file mode 100644 index 000000000000..1a05672835a7 --- /dev/null +++ b/clang-tools-extra/pseudo/test/cxx/predefined-identifier.cpp @@ -0,0 +1,5 @@ +// RUN: clang-pseudo -grammar=%cxx-bnf-file -source=%s --print-forest | FileCheck %s +void s() { + __func__; + // CHECK: expression~__FUNC__ := tok[5] +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits