// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=text -verify %s
// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=plist -analyzer-config path-diagnostics-alternate=false %s -o %t.plist
// RUN: FileCheck --input-file=%t.plist %s
void changePointee(int *p);
void test() {
  int *p = new int[1];
  // expected-note@-1 {{Memory is allocated}}
  changePointee(p);
  delete p; // expected-warning {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
  // expected-note@-1 {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
}
// CHECK: diagnostics
// CHECK-NEXT: 
// CHECK-NEXT:  
// CHECK-NEXT:   path
// CHECK-NEXT:   
// CHECK-NEXT:    
// CHECK-NEXT:     kindcontrol
// CHECK-NEXT:     edges
// CHECK-NEXT:      
// CHECK-NEXT:       
// CHECK-NEXT:        start
// CHECK-NEXT:         
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col3
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col5
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:         
// CHECK-NEXT:        end
// CHECK-NEXT:         
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col12
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col14
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:         
// CHECK-NEXT:       
// CHECK-NEXT:      
// CHECK-NEXT:    
// CHECK-NEXT:    
// CHECK-NEXT:     kindevent
// CHECK-NEXT:     location
// CHECK-NEXT:     
// CHECK-NEXT:      line7
// CHECK-NEXT:      col12
// CHECK-NEXT:      file0
// CHECK-NEXT:     
// CHECK-NEXT:     ranges
// CHECK-NEXT:     
// CHECK-NEXT:       
// CHECK-NEXT:        
// CHECK-NEXT:         line7
// CHECK-NEXT:         col12
// CHECK-NEXT:         file0
// CHECK-NEXT:        
// CHECK-NEXT:        
// CHECK-NEXT:         line7
// CHECK-NEXT:         col21
// CHECK-NEXT:         file0
// CHECK-NEXT:        
// CHECK-NEXT:       
// CHECK-NEXT:     
// CHECK-NEXT:     depth0
// CHECK-NEXT:     extended_message
// CHECK-NEXT:     Memory is allocated
// CHECK-NEXT:     message
// CHECK-NEXT:     Memory is allocated
// CHECK-NEXT:    
// CHECK-NEXT:    
// CHECK-NEXT:     kindcontrol
// CHECK-NEXT:     edges
// CHECK-NEXT:      
// CHECK-NEXT:       
// CHECK-NEXT:        start
// CHECK-NEXT:         
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col12
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:          
// CHECK-NEXT:           line7
// CHECK-NEXT:           col14
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:         
// CHECK-NEXT:        end
// CHECK-NEXT:         
// CHECK-NEXT:          
// CHECK-NEXT:           line10
// CHECK-NEXT:           col3
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:          
// CHECK-NEXT:           line10
// CHECK-NEXT:           col8
// CHECK-NEXT:           file0
// CHECK-NEXT:          
// CHECK-NEXT:         
// CHECK-NEXT:       
// CHECK-NEXT:      
// CHECK-NEXT:    
// CHECK-NEXT:    
// CHECK-NEXT:     kindevent
// CHECK-NEXT:     location
// CHECK-NEXT:     
// CHECK-NEXT:      line10
// CHECK-NEXT:      col3
// CHECK-NEXT:      file0
// CHECK-NEXT:     
// CHECK-NEXT:     ranges
// CHECK-NEXT:     
// CHECK-NEXT:       
// CHECK-NEXT:        
// CHECK-NEXT:         line10
// CHECK-NEXT:         col10
// CHECK-NEXT:         file0
// CHECK-NEXT:        
// CHECK-NEXT:        
// CHECK-NEXT:         line10
// CHECK-NEXT:         col10
// CHECK-NEXT:         file0
// CHECK-NEXT:        
// CHECK-NEXT:       
// CHECK-NEXT:     
// CHECK-NEXT:     depth0
// CHECK-NEXT:     extended_message
// CHECK-NEXT:     Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'
// CHECK-NEXT:     message
// CHECK-NEXT:     Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'
// CHECK-NEXT:    
// CHECK-NEXT:   
// CHECK-NEXT:   descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'
// CHECK-NEXT:   categoryMemory Error
// CHECK-NEXT:   typeBad deallocator
// CHECK-NEXT:  issue_context_kindfunction
// CHECK-NEXT:  issue_contexttest
// CHECK-NEXT:  issue_hash4
// CHECK-NEXT:  location
// CHECK-NEXT:  
// CHECK-NEXT:   line10
// CHECK-NEXT:   col3
// CHECK-NEXT:   file0
// CHECK-NEXT:  
// CHECK-NEXT:  
// CHECK-NEXT: