================
@@ -2823,7 +2823,13 @@ void PragmaSupportHandler<StartTok, EndTok,
UnexpectedDiag>::HandlePragma(
Tok.setKind(StartTok);
Tok.setLocation(Introducer.Loc);
- while (Tok.isNot(tok::eod) && Tok.isNot(tok::eof)) {
+ auto IsAtInputEnd = [&PP](const Token &T) {
+ if (PP.getLangOpts().IncrementalExtensions)
+ return T.is(tok::annot_repl_input_end);
+ return T.is(tok::eof);
+ };
----------------
anutosh491 wrote:
Because this code runs in a PragmaHandler (preprocessor-level), not inside the
Parser class, so it has no Parser instance to call the Parser::isAtInputEnd()
on and must instead use a local/PP-based end-of-input check otherwise you get a
compile error
```
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp: In member
function ‘void {anonymous}::PragmaSupportHandler<StartTok, EndTok,
UnexpectedDiag>::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducer,
clang::Token&)’:
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:2741:34: error:
there are no arguments to ‘isAtInputEnd’ that depend on a template parameter,
so a declaration of ‘isAtInputEnd’ must be available [-fpermissive]
2741 | while (Tok.isNot(tok::eod) && !isAtInputEnd(Tok)) {
| ^~~~~~~~~~~~
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:2741:34: note:
(if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of
an undeclared name is deprecated)
[ 37%] Building CXX object
tools/clang/lib/Parse/CMakeFiles/obj.clangParse.dir/ParseTentative.cpp.o
[ 37%] Building CXX object
tools/clang/lib/Parse/CMakeFiles/obj.clangParse.dir/Parser.cpp.o
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp: In
instantiation of ‘void {anonymous}::PragmaSupportHandler<StartTok, EndTok,
UnexpectedDiag>::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducer,
clang::Token&) [with clang::tok::TokenKind StartTok =
clang::tok::annot_pragma_openacc; clang::tok::TokenKind EndTok =
clang::tok::annot_pragma_openacc_end; unsigned int UnexpectedDiag = 1533]’:
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:212:8:
required from here
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:2741:46: error:
‘isAtInputEnd’ was not declared in this scope
2741 | while (Tok.isNot(tok::eod) && !isAtInputEnd(Tok)) {
| ~~~~~~~~~~~~^~~~~
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp: In
instantiation of ‘void {anonymous}::PragmaSupportHandler<StartTok, EndTok,
UnexpectedDiag>::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducer,
clang::Token&) [with clang::tok::TokenKind StartTok =
clang::tok::annot_pragma_openmp; clang::tok::TokenKind EndTok =
clang::tok::annot_pragma_openmp_end; unsigned int UnexpectedDiag = 1826]’:
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:212:8:
required from here
/build/anutosh491/llvm-project/clang/lib/Parse/ParsePragma.cpp:2741:46: error:
‘isAtInputEnd’ was not declared in this scope
gmake[3]: ***
[tools/clang/lib/Parse/CMakeFiles/obj.clangParse.dir/build.make:230:
tools/clang/lib/Parse/CMakeFiles/obj.clangParse.dir/ParsePragma.cpp.o] Error 1
```
Other checks in the file are fine though
https://github.com/llvm/llvm-project/pull/127569
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits