summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr69554-1.c
blob: 07ad0db7cf6d4245cca4e44f71363305dd8d57bd (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
144
145
146
147
148
149
150
151
152
/* { dg-options "-fdiagnostics-show-caret" } */

/* Various versions of the same C error, with a variety of line spacing,
   and of columns, to exercise the line-span handling in
   diagnostic-show-locus.c (PR other/69554).  */

/* All on one line.  */

int test_1 (const char *p, const char *q)
{
  return (p + 1) + (q + 1); /* { dg-error "invalid operands" } */
/* { dg-begin-multiline-output "" }
   return (p + 1) + (q + 1);
          ~~~~~~~ ^ ~~~~~~~
   { dg-end-multiline-output "" } */
}

/* On separate lines, but without intervening lines.
   This can be printed as a single span of lines.  */

int test_2 (const char *p, const char *q)
{
  return (p + 1)
           +  /* { dg-error "invalid operands" } */
            (q + 1);
/* { dg-begin-multiline-output "" }
   return (p + 1)
          ~~~~~~~
            +
            ^
             (q + 1);
             ~~~~~~~
   { dg-end-multiline-output "" } */
}

/* On separate lines, with an intervening line between lines 1 and 2.
   This is printed as 2 "spans" of lines, broken up by the intervening
   line.  */

int test_3 (const char *p, const char *q)
{
  return (p + 1) /* { dg-locus "10" } */

           +  /* { dg-error "invalid operands" } */
             (q + 1);
/* { dg-locus "12" "" { target *-*-* } "44" } */
/* { dg-begin-multiline-output "" }
   return (p + 1)
          ~~~~~~~
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
            +
            ^
              (q + 1);
              ~~~~~~~
   { dg-end-multiline-output "" } */
}

/* As above, but the intervening line is between lines 2 and 3,
   so that the 2 spans are grouped the other way.  */

int test_4 (const char *p, const char *q)
{
  return (p + 1)
           +  /* { dg-error "invalid operands" } */

             (q + 1); /* { dg-locus "14" } */
/* { dg-begin-multiline-output "" }
   return (p + 1)
          ~~~~~~~
            +
            ^
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
              (q + 1);
              ~~~~~~~
   { dg-end-multiline-output "" } */
}

/* On separate lines, with intervening lines.
   This is printed as 3 "spans" of lines, each span being an
   individual line.  */

int test_5 (const char *p, const char *q)
{
  return (p + 1) /* { dg-locus "10" } */

           +  /* { dg-error "invalid operands" } */

             (q + 1); /* { dg-locus "14" } */
/* { dg-locus "12" "" { target *-*-* } "88" } */
/* { dg-begin-multiline-output "" }
   return (p + 1)
          ~~~~~~~
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
            +
            ^
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
              (q + 1);
              ~~~~~~~
   { dg-end-multiline-output "" } */
}

/* On separate lines, with numerous intervening lines.
   This is printed as 3 "spans" of lines, each span being an
   individual line.  */

int test_6 (const char *p, const char *q)
{
  return (p + 1) /* { dg-locus "10" } */
	  /* Lorem ipsum dolor sit amet, consectetur adipiscing elit.
	     Maecenas nisl sapien, rutrum non euismod et, rutrum ac felis.
	     Morbi nec nisi ipsum. Quisque pulvinar ante nec urna rhoncus,
	     a cursus nisi commodo. Praesent euismod neque lectus, at
	     dapibus ipsum gravida in. Pellentesque tempor massa eu viverra
	     feugiat. Proin eleifend pulvinar urna, ut dapibus metus vehicula
	     ac. Suspendisse rutrum finibus quam, ac dignissim diam blandit
	     maximus. In blandit viverra pulvinar. Praesent vel tellus
	     elementum, placerat lacus quis, ornare lectus. Donec ac
	     eleifend nulla, sit amet condimentum risus. Vestibulum aliquam
	     maximus ante non pellentesque. Praesent mollis ante in risus
	     feugiat hendrerit. Praesent feugiat maximus urna nec blandit. */
           +  /* { dg-error "invalid operands" } */
	  /* Vestibulum ac nunc eget enim tempor tristique. Suspendisse
	     potenti. Nam et sollicitudin enim. Morbi sed tincidunt lectus.
	     Sed facilisis velit at ante maximus feugiat. Sed vestibulum mi
	     id leo tempor, sed ullamcorper sapien efficitur. Vestibulum purus
	     lacus, dignissim non magna at, tincidunt luctus nisl. Cum sociis
	     natoque penatibus et magnis dis parturient montes, nascetur
	     ridiculus mus. Donec elit elit, laoreet a dolor quis, eleifend
	     dapibus metus. Proin lectus turpis, eleifend nec pharetra eu,
	     fermentum in lacus. Morbi sit amet mauris orci. Nam sagittis,
	     nibh vel fermentum dictum, purus ex hendrerit odio, feugiat
	     fringilla sapien elit vitae nisl. Fusce mattis commodo risus
	     nec convallis. */
             (q + 1); /* { dg-locus "14" } */
/* { dg-locus "12" "" { target *-*-* } "125" } */
/* { dg-begin-multiline-output "" }
   return (p + 1)
          ~~~~~~~
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
            +
            ^
   { dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
              (q + 1);
              ~~~~~~~
   { dg-end-multiline-output "" } */
}