1 /* { dg-options "-fdiagnostics-show-caret" } */
2 
3 /* Verify that the C/C++ frontends show the pertinent opening symbol when
4    a closing symbol is missing for a function call.  */
5 
6 /* Verify that, when they are on the same line, that the opening symbol is
7    shown as a secondary range within the main diagnostic.  */
8 
9 extern int __attribute__((const)) foo (int a, int b, int c);
10 
11 void single_func ()
12 {
13   int single =
14     foo (1, (1 + 2), (1 + 2 + 3):); /* { dg-error "expected '\\)' before ':' token" } */
15   /* { dg-begin-multiline-output "" }
16      foo (1, (1 + 2), (1 + 2 + 3):);
17          ~                       ^
18                                  )
19      { dg-end-multiline-output "" } */
20 }
21 
22 /* Verify that, when they are on different lines, that the opening symbol is
23    shown via a secondary diagnostic.  */
24 
25 void multi_func ()
26 {
27   int multi =
28     foo (1, /* { dg-message "to match this '\\('" } */
29          (1 + 2),
30          (1 + 2 + 3):); /* { dg-error "expected '\\)' before ':' token" } */
31   /* { dg-begin-multiline-output "" }
32           (1 + 2 + 3):);
33                      ^
34                      )
35      { dg-end-multiline-output "" } */
36   /* { dg-begin-multiline-output "" }
37      foo (1,
38          ^
39      { dg-end-multiline-output "" } */
40 }
41