[PATCH] D148689: [clang][Interp] Handle PredefinedExprs

Timm Bäder via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 4 07:59:29 PDT 2023


tbaeder added inline comments.


================
Comment at: clang/test/AST/Interp/literals.cpp:849
+    static_assert(strings_match(__func__, "foo"));
+    static_assert(strings_match(__PRETTY_FUNCTION__, "void PredefinedExprs::foo()"));
+  }
----------------
aaron.ballman wrote:
> You should add coverage for the others as well:
> ```
>   enum IdentKind {
>     Func,
>     Function,
>     LFunction, // Same as Function, but as wide string.
>     FuncDName,
>     FuncSig,
>     LFuncSig, // Same as FuncSig, but as wide string
>     PrettyFunction,
>     /// The same as PrettyFunction, except that the
>     /// 'virtual' keyword is omitted for virtual member functions.
>     PrettyFunctionNoVirtual
>   };
> ```
> (you can handle the wide string variants by making `strings_match` into a template.)
These don't seem to exist in C++14 onwards:
```
array.cpp:1238:33: error: use of undeclared identifier '__FUNCDNAME__'
 1238 |     static_assert(strings_match(__FUNCDNAME__, "foo"), "");
      |                                 ^
array.cpp:1239:33: error: use of undeclared identifier '__FUNCSIG__'
 1239 |     static_assert(strings_match(__FUNCSIG__, "foo"), "");
      |                                 ^
array.cpp:1240:33: error: use of undeclared identifier '__LFUNCSIG__'
 1240 |     static_assert(strings_match(__LFUNCSIG__, "foo"), "");
      |                                 ^
array.cpp:1241:33: error: use of undeclared identifier '__LFUNCTION__'
 1241 |     static_assert(strings_match(__LFUNCTION__, "foo"), "");
      |                                 ^
array.cpp:1244:33: error: use of undeclared identifier '__PRETTY_FUNCTION_NO_VIRTUAL__'
 1244 |     static_assert(strings_match(__PRETTY_FUNCTION_NO_VIRTUAL__, "void PredefinedExprs::foo()"), "");
      |                                 ^
5 errors generated.
```
... but I can't use a while loop (or any kind of loop, I think?) before C++14 :)


================
Comment at: clang/test/AST/Interp/literals.cpp:849
+    static_assert(strings_match(__func__, "foo"));
+    static_assert(strings_match(__PRETTY_FUNCTION__, "void PredefinedExprs::foo()"));
+  }
----------------
tbaeder wrote:
> aaron.ballman wrote:
> > You should add coverage for the others as well:
> > ```
> >   enum IdentKind {
> >     Func,
> >     Function,
> >     LFunction, // Same as Function, but as wide string.
> >     FuncDName,
> >     FuncSig,
> >     LFuncSig, // Same as FuncSig, but as wide string
> >     PrettyFunction,
> >     /// The same as PrettyFunction, except that the
> >     /// 'virtual' keyword is omitted for virtual member functions.
> >     PrettyFunctionNoVirtual
> >   };
> > ```
> > (you can handle the wide string variants by making `strings_match` into a template.)
> These don't seem to exist in C++14 onwards:
> ```
> array.cpp:1238:33: error: use of undeclared identifier '__FUNCDNAME__'
>  1238 |     static_assert(strings_match(__FUNCDNAME__, "foo"), "");
>       |                                 ^
> array.cpp:1239:33: error: use of undeclared identifier '__FUNCSIG__'
>  1239 |     static_assert(strings_match(__FUNCSIG__, "foo"), "");
>       |                                 ^
> array.cpp:1240:33: error: use of undeclared identifier '__LFUNCSIG__'
>  1240 |     static_assert(strings_match(__LFUNCSIG__, "foo"), "");
>       |                                 ^
> array.cpp:1241:33: error: use of undeclared identifier '__LFUNCTION__'
>  1241 |     static_assert(strings_match(__LFUNCTION__, "foo"), "");
>       |                                 ^
> array.cpp:1244:33: error: use of undeclared identifier '__PRETTY_FUNCTION_NO_VIRTUAL__'
>  1244 |     static_assert(strings_match(__PRETTY_FUNCTION_NO_VIRTUAL__, "void PredefinedExprs::foo()"), "");
>       |                                 ^
> 5 errors generated.
> ```
> ... but I can't use a while loop (or any kind of loop, I think?) before C++14 :)
e


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

https://reviews.llvm.org/D148689



More information about the cfe-commits mailing list