blob: 70179158e14b14f4276c8a32a03a038fa42a6e27 [file] [log] [blame]
/* Example of a grouped error and note, with a fix-it hint on the note.
Intended output is similar to:
/PATH/test-note-with-fix-it-hint.c:21:13: error: unknown field 'colour'
21 | return p->colour;
| ^~~~~~
/PATH/test-note-with-fix-it-hint.c:21:13: note: did you mean 'color'
21 | return p->colour;
| ^~~~~~
| color
along with the equivalent in SARIF. */
#include "libgdiagnostics.h"
#include "test-helpers.h"
/* Placeholder source:
_________11111111112
12345678901234567890
return p->colour;
*/
const int line_num = __LINE__ - 2;
int
main ()
{
begin_test ("test-note-with-fix-it-hint.c.exe",
"test-note-with-fix-it-hint.c.sarif",
__FILE__, "c");
const diagnostic_physical_location *loc_token
= make_range (diag_mgr, main_file, line_num, 13, 18);
diagnostic_manager_begin_group (diag_mgr);
diagnostic *err = diagnostic_begin (diag_mgr, DIAGNOSTIC_LEVEL_ERROR);
diagnostic_set_location (err, loc_token);
diagnostic_finish (err, "unknown field %qs", "colour");
diagnostic *n = diagnostic_begin (diag_mgr, DIAGNOSTIC_LEVEL_NOTE);
diagnostic_set_location (n, loc_token);
diagnostic_add_fix_it_hint_replace (n, loc_token, "color");
diagnostic_finish (n, "did you mean %qs", "color");
diagnostic_manager_end_group (diag_mgr);
return end_test ();
}
/* Verify the output from the text sink.
{ dg-regexp "\[^\n\r\]+test-note-with-fix-it-hint.c:21:13: error: unknown field 'colour'" }
{ dg-begin-multiline-output "" }
21 | return p->colour;
| ^~~~~~
{ dg-end-multiline-output "" }
{ dg-regexp "\[^\n\r\]+test-note-with-fix-it-hint.c:21:13: note: did you mean 'color'" }
{ dg-begin-multiline-output "" }
21 | return p->colour;
| ^~~~~~
| color
{ dg-end-multiline-output "" } */
/* Verify that some JSON was written to a file with the expected name:
{ dg-final { verify-sarif-file } } */
/* Use a Python script to verify various properties about the generated
.sarif file:
{ dg-final { run-sarif-pytest test-note-with-fix-it-hint.c "test-note-with-fix-it-hint-c.py" } } */