[clang] [clang] Allow trivial pp-directives before C++ module directive (PR #153641)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 15 06:40:55 PDT 2025


================
@@ -1682,3 +1688,31 @@ const char *Preprocessor::getCheckPoint(FileID FID, const char *Start) const {
 
   return nullptr;
 }
+
+bool Preprocessor::hasSeenNoTrivialPPDirective() const {
+  return DirTracer && DirTracer->hasSeenNoTrivialPPDirective();
+}
+
+bool TrivialPPDirectiveTracer::hasSeenNoTrivialPPDirective() const {
+  return SeenNoTrivialPPDirective;
+}
+
+void TrivialPPDirectiveTracer::setSeenNoTrivialPPDirective() {
+  if (InMainFile && !SeenNoTrivialPPDirective)
+    SeenNoTrivialPPDirective = true;
+}
+
+void TrivialPPDirectiveTracer::LexedFileChanged(
+    FileID FID, LexedFileChangeReason Reason,
+    SrcMgr::CharacteristicKind FileType, FileID PrevFID, SourceLocation Loc) {
+  InMainFile = FID == PP.getSourceManager().getMainFileID();
----------------
erichkeane wrote:

```suggestion
  InMainFile = (FID == PP.getSourceManager().getMainFileID());
```

Reading order of ops can be painful :) 

https://github.com/llvm/llvm-project/pull/153641


More information about the cfe-commits mailing list