brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · e6f9555 Raw
57 lines · cpp
1// RUN: %clang_cc1 -verify -std=c++11 %s -fcxx-exceptions2 3class BadDtor {4  // A private, but nonetheless trivial, destructor.5  ~BadDtor() = default; // expected-note 9{{here}}6  friend class K;7};8void f() {9  BadDtor *p = new BadDtor[3]; // expected-error {{private destructor}}10  delete [] p; // expected-error {{private destructor}}11  const BadDtor &dd2 = BadDtor(); // expected-error {{private destructor}}12  BadDtor dd; // expected-error {{private destructor}}13  throw dd; // expected-error {{private destructor}}14}15struct V {16  V();17  BadDtor bd; // expected-note {{inaccessible destructor}}18};19V v; // expected-error {{deleted function}}20struct W : BadDtor { // expected-note {{inaccessible destructor}}21  W();22};23W w; // expected-error {{deleted function}}24struct X : BadDtor { // expected-error {{private destructor}}25  ~X() {}26};27struct Y {28  BadDtor dd; // expected-error {{private destructor}}29  ~Y() {}30};31struct Z : virtual BadDtor { // expected-error {{private destructor}}32  ~Z() {}33};34BadDtor dd; // expected-error {{private destructor}}35 36class K : BadDtor {37  void f() {38    BadDtor *p = new BadDtor[3];39    delete [] p;40    const BadDtor &dd2 = BadDtor();41    BadDtor dd;42    throw dd;43 44    {45      BadDtor x;46      goto dont_call_dtor;47    }48dont_call_dtor:49    ;50  }51  struct Z : virtual BadDtor {52    ~Z() {}53  };54  BadDtor dd;55  ~K();56};57