20class PragmaOnceCallbacks :
public PPCallbacks {
23 : Check(Check), SM(SM) {}
24 void PragmaDirective(SourceLocation Loc,
25 PragmaIntroducerKind Introducer)
override {
26 auto Str = llvm::StringRef(SM.getCharacterData(Loc));
27 if (!Str.consume_front(
"#"))
30 if (!Str.consume_front(
"pragma"))
33 if (Str.starts_with(
"once"))
35 "avoid 'pragma once' directive; use include guards instead");
40 const SourceManager &SM;
47 Preprocessor *ModuleExpanderPP) {
48 PP->addPPCallbacks(std::make_unique<PragmaOnceCallbacks>(
this, SM));