diff options
Diffstat (limited to 'tests/parser')
| -rw-r--r-- | tests/parser/incomplete-member-decl.slang | 20 | ||||
| -rw-r--r-- | tests/parser/incomplete-member-decl.slang.expected | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/tests/parser/incomplete-member-decl.slang b/tests/parser/incomplete-member-decl.slang new file mode 100644 index 000000000..67a722711 --- /dev/null +++ b/tests/parser/incomplete-member-decl.slang @@ -0,0 +1,20 @@ +// incomplete-member-decl.slang + +//DIAGNOSTIC_TEST:SIMPLE: + +// Regresion test to ensure parser doesn't go into infinite loop +// on incomplete/malformed member decalration + +struct Outer +{ + // Programmer was *trying* to declarae a field, but somehow + // ended up with two type specifiers. + // + // Parser sees the second (generic) type specifier and assumes + // it must represent a method declaration, at which point it + // fails to find a parameter list (no opening `(`), and then + // fails to find a body (no opening `{`), but finds a bare identifier + // instead. + // + int MyType<X> inner; +}
\ No newline at end of file diff --git a/tests/parser/incomplete-member-decl.slang.expected b/tests/parser/incomplete-member-decl.slang.expected new file mode 100644 index 000000000..ed5695977 --- /dev/null +++ b/tests/parser/incomplete-member-decl.slang.expected @@ -0,0 +1,8 @@ +result code = -1 +standard error = { +tests/parser/incomplete-member-decl.slang(19): error 20001: unexpected identifier, expected '(' + int MyType<X> inner; + ^~~~~ +} +standard output = { +} |
