brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · b68fcbf Raw
49 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,optin.cplusplus.VirtualCall \2// RUN:     -analyzer-config optin.cplusplus.VirtualCall:ShowFixIts=true \3// RUN:     %s 2>&1 | FileCheck -check-prefix=TEXT %s4 5// RUN: %check_analyzer_fixit %s %t \6// RUN:     -analyzer-checker=core,optin.cplusplus.VirtualCall \7// RUN:     -analyzer-config optin.cplusplus.VirtualCall:ShowFixIts=true \8// RUN:     -analyzer-output=plist -o %t.plist9// RUN: cat %t.plist | FileCheck -check-prefix=PLIST %s10 11struct S {12  virtual void foo();13  S() {14    foo();15    // expected-warning@-1{{Call to virtual method 'S::foo' during construction bypasses virtual dispatch}}16    // CHECK-FIXES:      S() {17    // CHECK-FIXES-NEXT:   S::foo();18    // CHECK-FIXES-NEXT: }19  }20  ~S();21};22 23// TEXT: warning: Call to virtual method 'S::foo' during construction24// TEXT-SAME: bypasses virtual dispatch25// TEXT-NEXT: foo();26// TEXT-NEXT: ^~~~~27// TEXT-NEXT: S::28// TEXT-NEXT: 1 warning generated.29 30// PLIST:  <key>fixits</key>31// PLIST-NEXT:  <array>32// PLIST-NEXT:   <dict>33// PLIST-NEXT:    <key>remove_range</key>34// PLIST-NEXT:    <array>35// PLIST-NEXT:     <dict>36// PLIST-NEXT:      <key>line</key><integer>14</integer>37// PLIST-NEXT:      <key>col</key><integer>5</integer>38// PLIST-NEXT:      <key>file</key><integer>0</integer>39// PLIST-NEXT:     </dict>40// PLIST-NEXT:     <dict>41// PLIST-NEXT:      <key>line</key><integer>14</integer>42// PLIST-NEXT:      <key>col</key><integer>4</integer>43// PLIST-NEXT:      <key>file</key><integer>0</integer>44// PLIST-NEXT:     </dict>45// PLIST-NEXT:    </array>46// PLIST-NEXT:    <key>insert_string</key><string>S::</string>47// PLIST-NEXT:   </dict>48// PLIST-NEXT:  </array>49