From f0c06a3fa424a7bf858d95f6e83c392dbb31ea43 Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Thu, 18 Jul 2013 14:23:12 +0000 Subject: [PATCH] Fix crash in libclang if code completion is used with unknown flags. Use CaptureDroppedDiagnostics to make sure that there is a diagnostic client installed when warning flags are parsed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186582 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Frontend/ASTUnit.cpp | 2 +- test/Index/c-index-unsupported-warning-test.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 test/Index/c-index-unsupported-warning-test.c diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index c1f6bc5bb0..9251fc0daa 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -2410,10 +2410,10 @@ void ASTUnit::CodeComplete(StringRef File, unsigned Line, unsigned Column, // Set up diagnostics, capturing any diagnostics produced. Clang->setDiagnostics(&Diag); - ProcessWarningOptions(Diag, CCInvocation->getDiagnosticOpts()); CaptureDroppedDiagnostics Capture(true, Clang->getDiagnostics(), StoredDiagnostics); + ProcessWarningOptions(Diag, CCInvocation->getDiagnosticOpts()); // Create the target instance. Clang->setTarget(TargetInfo::CreateTargetInfo(Clang->getDiagnostics(), diff --git a/test/Index/c-index-unsupported-warning-test.c b/test/Index/c-index-unsupported-warning-test.c new file mode 100644 index 0000000000..82ed06359d --- /dev/null +++ b/test/Index/c-index-unsupported-warning-test.c @@ -0,0 +1,3 @@ +// RUN: c-index-test -code-completion-at=%s:1:1 -Wunknown-foo-bar-warning -Werror %s + +void f();