p12-0x.cpp revision f6702a3927147655206ae729a84339c4fda4c651
1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
27a614d8380297fcd2bc23986241905d97222948cRichard Smith
37a614d8380297fcd2bc23986241905d97222948cRichard Smithstruct S {
47a614d8380297fcd2bc23986241905d97222948cRichard Smith  int *j = &nonexistent; // expected-error {{use of undeclared identifier 'nonexistent'}}
57a614d8380297fcd2bc23986241905d97222948cRichard Smith  int *m = &n; // ok
67a614d8380297fcd2bc23986241905d97222948cRichard Smith
77a614d8380297fcd2bc23986241905d97222948cRichard Smith  int n = f(); // ok
87a614d8380297fcd2bc23986241905d97222948cRichard Smith  int f();
97a614d8380297fcd2bc23986241905d97222948cRichard Smith};
107a614d8380297fcd2bc23986241905d97222948cRichard Smith
117a614d8380297fcd2bc23986241905d97222948cRichard Smithint i = sizeof(S::m); // ok
127a614d8380297fcd2bc23986241905d97222948cRichard Smithint j = sizeof(S::m + 42); // ok
13f6702a3927147655206ae729a84339c4fda4c651Richard Smith
14f6702a3927147655206ae729a84339c4fda4c651Richard Smith
15f6702a3927147655206ae729a84339c4fda4c651Richard Smithstruct T {
16f6702a3927147655206ae729a84339c4fda4c651Richard Smith  int n;
17f6702a3927147655206ae729a84339c4fda4c651Richard Smith  static void f() {
18f6702a3927147655206ae729a84339c4fda4c651Richard Smith    int a[n]; // expected-error {{invalid use of member 'n' in static member function}}
19f6702a3927147655206ae729a84339c4fda4c651Richard Smith    int b[sizeof n]; // ok
20f6702a3927147655206ae729a84339c4fda4c651Richard Smith  }
21f6702a3927147655206ae729a84339c4fda4c651Richard Smith};
22