teak-llvm/clang/test/Misc/diag-presumed.c
Richard Trieu ecd36ee80b Stop printing macro backtraces that don't help diagnostics.
When displaying the macro backtrace, ignore some of the backtraces that do not
provide extra information to the diagnostic.  Typically, if the problem is
entirely contained within a macro argument, the macro expansion is often not
needed.  Also take into account SourceRange's attached to the diagnostic when
selecting which backtraces to ignore.  Two previous test cases have also been
updated.

Patch by Zhengkai Wu, with minor formatting fixes.

Differential Revision: http://reviews.llvm.org/D11778

llvm-svn: 244788
2015-08-12 18:24:59 +00:00

35 lines
1.1 KiB
C

// RUN: not %clang_cc1 -fsyntax-only -pedantic-errors %s 2>&1 | FileCheck %s --check-prefix=PRESUMED
// RUN: not %clang_cc1 -fsyntax-only -pedantic-errors -fno-diagnostics-use-presumed-location %s 2>&1 | FileCheck %s --check-prefix=SPELLING
#line 100
#define X(y) y
X(int n = error);
// PRESUMED: diag-presumed.c:101:11: error: use of undeclared identifier 'error'
// SPELLING: diag-presumed.c:6:11: error: use of undeclared identifier 'error'
;
// PRESUMED: diag-presumed.c:106:1: error: extra ';' outside of a functio
// SPELLING: diag-presumed.c:11:1: error: extra ';' outside of a functio
# 1 "thing1.cc" 1
# 1 "thing1.h" 1
# 1 "systemheader.h" 1 3
;
// No diagnostic here: we're in a system header, even if we're using spelling
// locations for the diagnostics..
// PRESUMED-NOT: extra ';'
// SPELLING-NOT: extra ';'
another error;
// PRESUMED: included from {{.*}}diag-presumed.c:110:
// PRESUMED: from thing1.cc:1:
// PRESUMED: from thing1.h:1:
// PRESUMED: systemheader.h:7:1: error: unknown type name 'another'
// SPELLING-NOT: included from
// SPELLING: diag-presumed.c:24:1: error: unknown type name 'another'
# 1 "thing1.h" 2
# 1 "thing1.cc" 2