Skip to content

Commit

Permalink
[pseudo] Handle the language predefined identifier __func__
Browse files Browse the repository at this point in the history
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
  • Loading branch information
hokein committed Jun 7, 2022
1 parent 9b3712e commit 90dab04
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
5 changes: 5 additions & 0 deletions clang-tools-extra/pseudo/lib/cxx.bnf
Expand Up @@ -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__
5 changes: 5 additions & 0 deletions 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]
}

0 comments on commit 90dab04

Please sign in to comment.