|  | // RUN: %clang_cc1 -fmodules -verify %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | #pragma clang module build M | 
|  | module M {} | 
|  | #pragma clang module contents | 
|  | #pragma clang module begin M | 
|  | struct A { | 
|  | A(); | 
|  | ~A() { delete p; } // expected-warning {{'delete' applied to a pointer that was allocated with 'new[]'}} | 
|  | int *p; | 
|  | }; | 
|  | inline A::A() : p(new int[32]) {} // expected-note {{allocated}} | 
|  | struct B { | 
|  | B(); | 
|  | ~B() { delete p; } | 
|  | int *p; | 
|  | }; | 
|  | #pragma clang module end | 
|  | #pragma clang module endbuild | 
|  |  | 
|  | #pragma clang module import M | 
|  | B::B() : p(new int[32]) {} |