1  /* { dg-do compile } */
       2  /* { dg-options "-fdiagnostics-format=sarif-file" } */
       3  
       4  #warning message
       5  
       6  /* Verify that some JSON was written to a file with the expected name.  */
       7  /* { dg-final { verify-sarif-file } } */
       8  
       9  /* We expect various properties.
      10     The indentation here reflects the expected hierarchy, though these tests
      11     don't check for that, merely the string fragments we expect.
      12     { dg-final { scan-sarif-file "\"version\": \"2.1.0\"" } }
      13     { dg-final { scan-sarif-file "\"runs\": \\\[" } }
      14       { dg-final { scan-sarif-file "\"artifacts\": \\\[" } } 
      15         { dg-final { scan-sarif-file "\"location\": " } }
      16           { dg-final { scan-sarif-file "\"uri\": " } }
      17  
      18         { dg-final { scan-sarif-file "\"sourceLanguage\": \"c\"" { target c } } }
      19         { dg-final { scan-sarif-file "\"sourceLanguage\": \"cplusplus\"" { target c++ } } }
      20  
      21         { dg-final { scan-sarif-file "\"contents\": " } }
      22           { dg-final { scan-sarif-file "\"text\": " } }
      23       { dg-final { scan-sarif-file "\"tool\": " } }
      24         { dg-final { scan-sarif-file "\"driver\": " } }
      25           { dg-final { scan-sarif-file "\"name\": \"GNU C" } }
      26           { dg-final { scan-sarif-file "\"fullName\": \"GNU C" } }
      27           { dg-final { scan-sarif-file "\"informationUri\": \"" } }
      28  
      29       { dg-final { scan-sarif-file "\"invocations\": \\\[" } }
      30         { dg-final { scan-sarif-file "\"toolExecutionNotifications\": \\\[\\\]" } }
      31         { dg-final { scan-sarif-file "\"executionSuccessful\": true" } }
      32  
      33       { dg-final { scan-sarif-file "\"results\": \\\[" } }
      34         { dg-final { scan-sarif-file "\"level\": \"warning\"" } }
      35         { dg-final { scan-sarif-file "\"ruleId\": \"-Wcpp\"" } }
      36         { dg-final { scan-sarif-file "\"locations\": \\\[" } }
      37           { dg-final { scan-sarif-file "\"physicalLocation\": " } }
      38             { dg-final { scan-sarif-file "\"contextRegion\": " } }
      39             { dg-final { scan-sarif-file "\"artifactLocation\": " } }
      40             { dg-final { scan-sarif-file "\"region\": " } }
      41               { dg-final { scan-sarif-file "\"startLine\": 4" } }
      42               { dg-final { scan-sarif-file "\"startColumn\": 2" } }
      43               { dg-final { scan-sarif-file "\"endColumn\": 9" } }
      44  
      45           We don't expect logical locations for a top-level warning:
      46           { dg-final { scan-sarif-file-not "\"logicalLocations\": " } }
      47  
      48         { dg-final { scan-sarif-file "\"message\": " } }
      49           { dg-final { scan-sarif-file "\"text\": \"#warning message" } } */