// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
// rdar://13784901
;
; // expected-note 6 {{forward declaration}}
extern S1 s1;
const int test3 = ; // expected-error {{invalid application of '__alignof' to an incomplete type 'S1'}}
;
const int test6 = ;
const int test7 = ; // expected-error {{invalid application of '__alignof' to an incomplete type 'S1'}}
// Arguably, these should fail like the S1 cases do: the alignment of
// 's2.x' should depend on the alignment of both x-within-S2 and
// s2-within-S3 and thus require 'S3' to be complete. If we start
// doing the appropriate recursive walk to do that, we should make
// sure that these cases don't explode.
;
// Same reasoning as S3.
;
// Regression test for asking for the alignment of a field within an invalid
// record.
;
const int test8 = ;
int test14;
static_assert; // expected-warning {{'alignof' applied to an expression is a GNU extension}}
// PR19992
static_assert; // ok
void
;
typedef int aligned_int;
using template_alias = aligned_int;
static_assert;
;
static_assert; // Don't crash.