================
@@ -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

Reply via email to