summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Bohme <mboehme@google.com>2017-08-30 10:44:51 +0000
committerMartin Bohme <mboehme@google.com>2017-08-30 10:44:51 +0000
commit362362f51fcee8fdc49e0a2e15ad7b43c4f7fa76 (patch)
treedc2052b78cc3e04aef33737cf8390df7f7b7290d
parentc259e431a5e80c73ee1df96d1f323defbc796aee (diff)
Add test case that was broken by r311970.
See also discussion here: https://reviews.llvm.org/rL301963 As far as I can tell, this discussion was never resolved. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312109 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/SemaCXX/constant-expression-cxx11.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/SemaCXX/constant-expression-cxx11.cpp b/test/SemaCXX/constant-expression-cxx11.cpp
index 3fda2d0a7f..b1575077cd 100644
--- a/test/SemaCXX/constant-expression-cxx11.cpp
+++ b/test/SemaCXX/constant-expression-cxx11.cpp
@@ -604,6 +604,22 @@ static_assert(NATDCArray{}[1][1].n == 0, "");
}
+// Tests for indexes into arrays of unknown bounds.
+namespace ArrayOfUnknownBound {
+ // This is a corner case of the language where it's not clear whether this
+ // should be an error: When we see the initializer for Z::a, the bounds of
+ // Z::b aren't known yet, but they will be known by the end of the translation
+ // unit, so the compiler can in theory check the indexing into Z::b.
+ // For the time being, as long as this is unclear, we want to make sure that
+ // this compiles.
+ struct Z {
+ static const void *const a[];
+ static const void *const b[];
+ };
+ constexpr const void *Z::a[] = {&b[0], &b[1]};
+ constexpr const void *Z::b[] = {&a[0], &a[1]};
+}
+
namespace DependentValues {
struct I { int n; typedef I V[10]; };