================ @@ -0,0 +1,36 @@ +// RUN: %clang_cc1 -fexperimental-new-constant-interpreter -verify=both,expected -std=c++98 %s +// RUN: %clang_cc1 -verify=both,ref -std=c++98 %s + + + +namespace IntOrEnum { + const int k = 0; + const int &p = k; // both-note {{declared here}} + template<int n> struct S {}; + S<p> s; // both-error {{not an integral constant expression}} \ + // both-note {{read of variable 'p' of non-integral, non-enumeration type 'const int &'}} +} + +const int cval = 2; +template <int> struct C{}; +template struct C<cval>; + + +/// FIXME: This example does not get properly diagnosed in the new interpreter. +extern const int recurse1; +const int recurse2 = recurse1; // ref-note {{here}} +const int recurse1 = 1; +int array1[recurse1]; +int array2[recurse2]; // ref-warning 2{{variable length array}} \ + // ref-note {{initializer of 'recurse2' is not a constant expression}} \ + // expected-warning {{variable length array}} \ + // expected-error {{variable length array}} + +int NCI; // expected-note {{declared here}} \ + // ref-note {{declared here}} +int NCIA[NCI]; // expected-warning {{variable length array}} \ + // expected-error {{variable length array}} \\ + // expected-note {{read of non-const variable 'NCI'}} \ + // ref-warning {{variable length array}} \ + // ref-error {{variable length array}} \\ + // ref-note {{read of non-const variable 'NCI'}} ---------------- AaronBallman wrote:
Switch these to using `both` instead? https://github.com/llvm/llvm-project/pull/76718 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits