summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-11-14 23:55:25 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-11-14 23:55:25 +0000
commit0b50cb79ada2f361b11571b56350587012d0f1da (patch)
tree47400c99a4c37db7246856c07d2c20f19aa774f1 /clang/test
parenta19a126ee3cdcf304272042a8e29ea841e22e0d4 (diff)
downloadbcm5719-llvm-0b50cb79ada2f361b11571b56350587012d0f1da.tar.gz
bcm5719-llvm-0b50cb79ada2f361b11571b56350587012d0f1da.zip
Add -cc1 option -fno-diagnostics-use-presumed-location, a handy mode for
working with preprocessed testcases. This causes source locations in diagnostics to point at the spelling location instead of the presumed location, while still keeping the semantic effects of the line directives (entering and leaving system-header mode, primarily). llvm-svn: 168004
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Misc/diag-presumed.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/clang/test/Misc/diag-presumed.c b/clang/test/Misc/diag-presumed.c
new file mode 100644
index 00000000000..07b7cdfe351
--- /dev/null
+++ b/clang/test/Misc/diag-presumed.c
@@ -0,0 +1,36 @@
+// RUN: %clang_cc1 -fsyntax-only -pedantic-errors %s 2>&1 | FileCheck %s --check-prefix=PRESUMED
+// RUN: %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'
+// PRESUMED: diag-presumed.c:100:14: note: expanded from
+// SPELLING: diag-presumed.c:6:11: error: use of undeclared identifier 'error'
+// SPELLING: diag-presumed.c:5:14: note: expanded from
+
+;
+// PRESUMED: diag-presumed.c:108:1: error: extra ';' outside of a functio
+// SPELLING: diag-presumed.c:13: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:112:
+// 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:26:1: error: unknown type name 'another'
+
+# 1 "thing1.h" 2
+# 1 "thing1.cc" 2
OpenPOWER on IntegriCloud