diff options
Diffstat (limited to 'gcc/testsuite/c-c++-common/missing-close-func-paren.c')
-rw-r--r-- | gcc/testsuite/c-c++-common/missing-close-func-paren.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/missing-close-func-paren.c b/gcc/testsuite/c-c++-common/missing-close-func-paren.c new file mode 100644 index 0000000..3177e25 --- /dev/null +++ b/gcc/testsuite/c-c++-common/missing-close-func-paren.c @@ -0,0 +1,40 @@ +/* { dg-options "-fdiagnostics-show-caret" } */ + +/* Verify that the C/C++ frontends show the pertinent opening symbol when + a closing symbol is missing for a function call. */ + +/* Verify that, when they are on the same line, that the opening symbol is + shown as a secondary range within the main diagnostic. */ + +extern int __attribute__((const)) foo (int a, int b, int c); + +void single_func () +{ + int single = + foo (1, (1 + 2), (1 + 2 + 3):); /* { dg-error "expected '\\)' before ':' token" } */ + /* { dg-begin-multiline-output "" } + foo (1, (1 + 2), (1 + 2 + 3):); + ~ ^ + ) + { dg-end-multiline-output "" } */ +} + +/* Verify that, when they are on different lines, that the opening symbol is + shown via a secondary diagnostic. */ + +void multi_func () +{ + int multi = + foo (1, /* { dg-message "to match this '\\('" } */ + (1 + 2), + (1 + 2 + 3):); /* { dg-error "expected '\\)' before ':' token" } */ + /* { dg-begin-multiline-output "" } + (1 + 2 + 3):); + ^ + ) + { dg-end-multiline-output "" } */ + /* { dg-begin-multiline-output "" } + foo (1, + ^ + { dg-end-multiline-output "" } */ +} |