// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wno-deprecated-builtins
// expected-no-diagnostics
structT1{};static_assert(__has_trivial_destructor(T1),"T1 has trivial destructor!");structT2{~T2();};static_assert(!__has_trivial_destructor(T2),"T2 has a user-declared destructor!");structT3{virtualvoidf();};static_assert(__has_trivial_destructor(T3),"T3 has a virtual function (but still a trivial destructor)!");structT4:virtualT3{};static_assert(__has_trivial_destructor(T4),"T4 has a virtual base class! (but still a trivial destructor)!");structT5:T1{};static_assert(__has_trivial_destructor(T5),"All the direct base classes of T5 have trivial destructors!");structT6{T5 t5;T1 t1[2][2];staticT2 t2;};static_assert(__has_trivial_destructor(T6),"All nonstatic data members of T6 have trivial destructors!");structT7{T2 t2;};static_assert(!__has_trivial_destructor(T7),"t2 does not have a trivial destructor!");structT8:T2{};static_assert(!__has_trivial_destructor(T8),"The base class T2 does not have a trivial destructor!");