#include "clang/AST/ASTContext.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Basic/SourceLocation.h"
+#include "clang/Frontend/TextDiagnostic.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/STLExtras.h"
auto &SrcMgr = AO.ASTCtx.getSourceManager();
llvm::DenseSet<unsigned> DiagnosticLines;
for (SourceLocation &Loc : Diagnostics) {
- DiagnosticLines.insert(SrcMgr.getPresumedLineNumber(Loc));
+ unsigned Line = SrcMgr.getPresumedLineNumber(Loc);
+ DiagnosticLines.insert(Line);
+ if (!AnnotationLines.contains(Line)) {
+ IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(
+ new DiagnosticOptions());
+ TextDiagnostic TD(llvm::errs(), AO.ASTCtx.getLangOpts(),
+ DiagOpts.get());
+ TD.emitDiagnostic(
+ FullSourceLoc(Loc, SrcMgr), DiagnosticsEngine::Error,
+ "unexpected diagnostic", std::nullopt, std::nullopt);
+ }
}
EXPECT_THAT(DiagnosticLines, ContainerEq(AnnotationLines));