summaryrefslogtreecommitdiffstats
path: root/clang/test/Frontend
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-04-13 04:33:39 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-04-13 04:33:39 +0000
commit4e8144a0d140adf1ee07d78f3ff1ebb41790a9a3 (patch)
treeef4ca2263636e62ca3cc0cc3bd93fc05e580bd75 /clang/test/Frontend
parente03301a3b32d048d8975e0fe21d80489505415c8 (diff)
downloadbcm5719-llvm-4e8144a0d140adf1ee07d78f3ff1ebb41790a9a3.tar.gz
bcm5719-llvm-4e8144a0d140adf1ee07d78f3ff1ebb41790a9a3.zip
[verify] Add support for location markers in directives.
A marker (matching /#[A-Za-z0-9_-]/) is specified by attaching a comment containing the marker to the line at which the diagnostic is expected, and then can be referenced from an expected-* directive after an @: foo // #1 // expected-error@#1 {{undeclared identifier 'foo'}} The intent is for markers to be used in situations where relative line numbers are currently used, to avoid the need to renumber when the test case is rearranged. llvm-svn: 358326
Diffstat (limited to 'clang/test/Frontend')
-rw-r--r--clang/test/Frontend/verify-marker.c22
-rw-r--r--clang/test/Frontend/verify-marker.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/Frontend/verify-marker.c b/clang/test/Frontend/verify-marker.c
new file mode 100644
index 00000000000..7beee973246
--- /dev/null
+++ b/clang/test/Frontend/verify-marker.c
@@ -0,0 +1,22 @@
+// RUN: %clang_cc1 -verify %s
+
+#include "verify-marker.h" // expected-error@#1 {{unknown type name 'unknown_type'}}
+
+int x = 1; // #a
+int x = 2; // #b
+// expected-error@#b {{redefinition of 'x'}}
+// expected-note@#a {{previous}}
+
+// expected-error@#unknown {{}} expected-error {{use of undefined marker '#unknown'}}
+
+// This is OK: there's no problem with a source file containing what looks like
+// a duplicate definition of a marker if that marker is never used.
+// #foo
+// #foo
+
+// #bar expected-note {{ambiguous marker '#bar' is defined here}}
+// #bar expected-note {{ambiguous marker '#bar' is defined here}}
+// expected-error@#bar 0-1{{oops}} expected-error{{reference to marker '#bar' is ambiguous}}
+
+// expected-error@#forward_ref {{undeclared identifier 'future'}}
+int y = future; // #forward_ref
diff --git a/clang/test/Frontend/verify-marker.h b/clang/test/Frontend/verify-marker.h
new file mode 100644
index 00000000000..04bd3884979
--- /dev/null
+++ b/clang/test/Frontend/verify-marker.h
@@ -0,0 +1 @@
+unknown_type x; // #1
OpenPOWER on IntegriCloud