aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
blob: cfdc20819bed5ee7519282a0be9fc3e0abbe98e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* { dg-do compile } */
/* { dg-options "-O -fdiagnostics-generate-patch" } */

/* This is a collection of unittests for diagnostic_show_locus;
   see the overview in diagnostic_plugin_test_show_locus.c.

   In particular, note the discussion of why we need a very long line here:
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
   and that we can't use macros in this file.  */

/* Unit test for rendering of insertion fixit hints
   (example taken from PR 62316).  */

void test_fixit_insert (void)
{
#if 0
   int a[2][2] = { 0, 1 , 2, 3 }; /* { dg-warning "insertion hints" } */
#endif
}

/* Unit test for rendering of "remove" fixit hints.  */

void test_fixit_remove (void)
{
#if 0
  int a;; /* { dg-warning "example of a removal hint" } */
#endif
}

/* Unit test for rendering of "replace" fixit hints.  */

void test_fixit_replace (void)
{
#if 0
  gtk_widget_showall (dlg); /* { dg-warning "example of a replacement hint" } */
#endif
}

/* Unit test for rendering of fix-it hints that add new lines.  */

void test_fixit_insert_newline (void)
{
#if 0
  switch (op)
    {
    case 'a':
      x = a;
    case 'b': /* { dg-warning "newline insertion" } */
      x = b;
    }
#endif
}

/* Unit test for mutually-exclusive suggestions.  */

void test_mutually_exclusive_suggestions (void)
{
#if 0
  original; /* { dg-warning "warning 1" } */
/* { dg-warning "warning 2" "" { target *-*-* } .-1 } */
/* We should not print the mutually-incompatible fix-it hints within
   the generated patch; they are not listed in the big expected
   multiline output below.  */
#endif
}

/* Unit tests for add_fixit_insert_formatted.  */

void test_add_fixit_insert_formatted_single_line (void)
{
  {}
}

void test_add_fixit_insert_formatted_multiline (void)
{
  if (1)
    {
    }
}


/* Verify the output from -fdiagnostics-generate-patch.
   We expect a header, containing the filename.  This is the absolute path,
   so we can only capture it via regexps.  */

/* { dg-regexp "\\-\\-\\- .*" } */
/* { dg-regexp "\\+\\+\\+ .*" } */

/* Next, we expect the diff itself.  */
/* { dg-begin-multiline-output "" }
@@ -14,7 +14,7 @@
 void test_fixit_insert (void)
 {
 #if 0
-   int a[2][2] = { 0, 1 , 2, 3 };
+   int a[2][2] = { {0, 1} , 2, 3 };
 #endif
 }
 
@@ -23,7 +23,7 @@
 void test_fixit_remove (void)
 {
 #if 0
-  int a;;
+  int a;
 #endif
 }
 
@@ -32,7 +32,7 @@
 void test_fixit_replace (void)
 {
 #if 0
-  gtk_widget_showall (dlg);
+  gtk_widget_show_all (dlg);
 #endif
 }
 
@@ -45,6 +45,7 @@
     {
     case 'a':
       x = a;
+      break;
     case 'b':
       x = b;
     }
@@ -68,7 +69,7 @@
 
 void test_add_fixit_insert_formatted_single_line (void)
 {
-  {}
+  {INSERTED-CONTENT}
 }
 
 void test_add_fixit_insert_formatted_multiline (void)
@@ -76,6 +77,7 @@
   if (1)
     {
     }
+  INSERTED-CONTENT
 }
 
 
   { dg-end-multiline-output "" } */