diff options
author | Martin Bohme <mboehme@google.com> | 2017-08-30 10:44:51 +0000 |
---|---|---|
committer | Martin Bohme <mboehme@google.com> | 2017-08-30 10:44:51 +0000 |
commit | 362362f51fcee8fdc49e0a2e15ad7b43c4f7fa76 (patch) | |
tree | dc2052b78cc3e04aef33737cf8390df7f7b7290d | |
parent | c259e431a5e80c73ee1df96d1f323defbc796aee (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.cpp | 16 |
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]; }; |