1 /* { dg-do compile } */
2 /* { dg-options "-O -fdiagnostics-show-caret" } */
3
4 /* This is an example file for use with
5 diagnostic_plugin_show_trees.c.
6
7 The plugin handles "__show_tree" by recursively dumping
8 the internal structure of the second input argument.
9
10 We want to accept an expression of any type. To do this in C, we
11 use variadic arguments, but C requires at least one argument before
12 the ellipsis, so we have a dummy one. */
13
14 extern void __show_tree (int dummy, ...);
15
16 extern double sqrt (double x);
17
test_quadratic(double a,double b,double c)18 void test_quadratic (double a, double b, double c)
19 {
20 __show_tree (0,
21 (-b + sqrt (b * b - 4 * a * c))
22 / (2 * a));
23
24 /* { dg-begin-multiline-output "" }
25 (-b + sqrt (b * b - 4 * a * c))
26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27 / (2 * a));
28 ^~~~~~~~~
29 { dg-end-multiline-output "" } */
30
31 /* { dg-begin-multiline-output "" }
32 (-b + sqrt (b * b - 4 * a * c))
33 ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
34 { dg-end-multiline-output "" } */
35
36 /* { dg-begin-multiline-output "" }
37 (-b + sqrt (b * b - 4 * a * c))
38 ^~~~~~~~~~~~~~~~~~~~~~~~
39 { dg-end-multiline-output "" } */
40
41 /* { dg-begin-multiline-output "" }
42 (-b + sqrt (b * b - 4 * a * c))
43 ~~~~~~^~~~~~~~~~~
44 { dg-end-multiline-output "" } */
45
46 /* { dg-begin-multiline-output "" }
47 (-b + sqrt (b * b - 4 * a * c))
48 ~~^~~
49 { dg-end-multiline-output "" } */
50
51 /* { dg-begin-multiline-output "" }
52 (-b + sqrt (b * b - 4 * a * c))
53 ~~~~~~^~~
54 { dg-end-multiline-output "" } */
55
56 /* { dg-begin-multiline-output "" }
57 (-b + sqrt (b * b - 4 * a * c))
58 ~~^~~
59 { dg-end-multiline-output "" } */
60
61 /* { dg-begin-multiline-output "" }
62 / (2 * a));
63 ~~~^~~~
64 { dg-end-multiline-output "" } */
65 }
66