Skip to content

Commit e5e60a5

Browse files
authored
Merge pull request #41930 from hamishknight/quoted-in-context
2 parents 1ef2c59 + cb51464 commit e5e60a5

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

test/StringProcessing/Parse/regex.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,11 @@ _ = re're\r\e\'\\'
2121
_ = (#/[*/#, #/+]/#, #/.]/#)
2222
// expected-error@-1 {{cannot parse regular expression: quantifier '+' must appear after expression}}
2323
// expected-error@-2 {{cannot parse regular expression: expected ']'}}
24+
25+
// Make sure we can skip over `'` characters in the regex body.
26+
_ = re'(?'xA0_-y1'x)'
27+
_ = re'(?('xA0_')\')'
28+
_ = re'\'(?('-20'))'
29+
_ = re'\k'+2-1'\''
30+
_ = re'\g'xA0_''
31+
_ = re'(?C'9,3, pg(')'

test/StringProcessing/Parse/regex_parse_error.swift

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,43 @@ _ = re'(' // expected-error {{expected ')'}}
66
// FIXME: Should be 'group openings'
77
_ = re')' // expected-error {{closing ')' does not balance any groups openings}}
88

9-
let s = #/\\/''/ // expected-error {{unterminated regex literal}}
9+
_ = #/\\/''/ // expected-error {{unterminated regex literal}}
1010
_ = #|\| // expected-error {{unterminated regex literal}}
1111
_ = #// // expected-error {{unterminated regex literal}}
1212
_ = re'x // expected-error {{unterminated regex literal}}
1313

14-
// expected-error@+1 {{unterminated regex literal}}
15-
var unterminated = #/xy
14+
_ = #/xy // expected-error {{unterminated regex literal}}
15+
16+
_ = re'(?' // expected-error {{expected group specifier}}
17+
18+
_ = re'(?'' // expected-error {{unterminated regex literal}}
19+
// expected-error@-1 {{expected group name}}
20+
21+
_ = re'(?'abc' // expected-error {{unterminated regex literal}}
22+
// expected-error@-1 {{expected ')'}}
23+
24+
// TODO: Maybe change "unterminated string literal" to "unterminated single quote"?
25+
_ = re'(?'abc ' // expected-error {{unterminated string literal}}
26+
// expected-error@-1 {{expected group specifier}}
27+
// expected-error@-2 {{consecutive statements on a line must be separated by ';'}}
28+
29+
_ = re'(?'a // expected-error {{expected group specifier}}
30+
// expected-error@-1 {{cannot find 'a' in scope}}
31+
// expected-error@-2 {{consecutive statements on a line must be separated by ';'}}
32+
33+
_ = re'\(?'abc' // expected-error {{unterminated string literal}}
34+
// expected-error@-1 {{consecutive statements on a line must be separated by ';'}}
35+
36+
_ = re'\
37+
'
38+
// expected-error@-2 {{unterminated regex literal}}
39+
// expected-error@-3 {{expected escape sequence}}
40+
// expected-error@-3 {{unterminated string literal}}
41+
42+
func foo<T>(_ x: T, _ y: T) {}
43+
foo(re'(?', re'abc') // expected-error {{expected group specifier}}
44+
foo(re'(?C', re'abc') // expected-error {{expected ')'}}
45+
46+
foo(re'(?'', re'abc') // expected-error {{expected group name}}
47+
// expected-error@-1 {{unterminated string literal}}
48+
// expected-error@-2 {{expected ',' separator}}

0 commit comments

Comments
 (0)