mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
scanner: fix and resotre string interpolation tests (#16242)
This commit is contained in:
parent
5daa38fdb1
commit
daa2f90023
@ -4,31 +4,52 @@ vlib/v/checker/tests/str_interpol_invalid_err.vv:8:13: error: illegal format spe
|
|||||||
8 | _ = '${[1]:x}'
|
8 | _ = '${[1]:x}'
|
||||||
| ^
|
| ^
|
||||||
9 | _ = '${[1]!:x}'
|
9 | _ = '${[1]!:x}'
|
||||||
10 | //_ = '${Foo{}:x}'
|
10 | _ = '${Foo{}:x}'
|
||||||
vlib/v/checker/tests/str_interpol_invalid_err.vv:9:14: error: illegal format specifier `x` for type `[1]int`
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:9:14: error: illegal format specifier `x` for type `[1]int`
|
||||||
7 | fn main() {
|
7 | fn main() {
|
||||||
8 | _ = '${[1]:x}'
|
8 | _ = '${[1]:x}'
|
||||||
9 | _ = '${[1]!:x}'
|
9 | _ = '${[1]!:x}'
|
||||||
| ^
|
| ^
|
||||||
10 | //_ = '${Foo{}:x}'
|
10 | _ = '${Foo{}:x}'
|
||||||
11 | _ = '${[1]:f}'
|
11 | _ = '${[1]:f}'
|
||||||
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:10:15: error: illegal format specifier `x` for type `Foo`
|
||||||
|
8 | _ = '${[1]:x}'
|
||||||
|
9 | _ = '${[1]!:x}'
|
||||||
|
10 | _ = '${Foo{}:x}'
|
||||||
|
| ^
|
||||||
|
11 | _ = '${[1]:f}'
|
||||||
|
12 | _ := '${none:F}'
|
||||||
vlib/v/checker/tests/str_interpol_invalid_err.vv:11:13: error: illegal format specifier `f` for type `[]int`
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:11:13: error: illegal format specifier `f` for type `[]int`
|
||||||
9 | _ = '${[1]!:x}'
|
9 | _ = '${[1]!:x}'
|
||||||
10 | //_ = '${Foo{}:x}'
|
10 | _ = '${Foo{}:x}'
|
||||||
11 | _ = '${[1]:f}'
|
11 | _ = '${[1]:f}'
|
||||||
| ^
|
| ^
|
||||||
12 | _ := '${none:F}'
|
12 | _ := '${none:F}'
|
||||||
13 | //_ = '${{"a": "b"}:x}'
|
13 | _ = '${{"a": "b"}:x}'
|
||||||
vlib/v/checker/tests/str_interpol_invalid_err.vv:12:15: error: illegal format specifier `F` for type `none`
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:12:15: error: illegal format specifier `F` for type `none`
|
||||||
10 | //_ = '${Foo{}:x}'
|
10 | _ = '${Foo{}:x}'
|
||||||
11 | _ = '${[1]:f}'
|
11 | _ = '${[1]:f}'
|
||||||
12 | _ := '${none:F}'
|
12 | _ := '${none:F}'
|
||||||
| ^
|
| ^
|
||||||
13 | //_ = '${{"a": "b"}:x}'
|
13 | _ = '${{"a": "b"}:x}'
|
||||||
14 | //_ = '${Alias(Foo{}):x}'
|
14 | _ = '${Alias(Foo{}):x}'
|
||||||
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:13:20: error: illegal format specifier `x` for type `map[string]string`
|
||||||
|
11 | _ = '${[1]:f}'
|
||||||
|
12 | _ := '${none:F}'
|
||||||
|
13 | _ = '${{"a": "b"}:x}'
|
||||||
|
| ^
|
||||||
|
14 | _ = '${Alias(Foo{}):x}'
|
||||||
|
15 | _ = '${SumType(int(5)):o}'
|
||||||
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:14:22: error: illegal format specifier `x` for type `Alias`
|
||||||
|
12 | _ := '${none:F}'
|
||||||
|
13 | _ = '${{"a": "b"}:x}'
|
||||||
|
14 | _ = '${Alias(Foo{}):x}'
|
||||||
|
| ^
|
||||||
|
15 | _ = '${SumType(int(5)):o}'
|
||||||
|
16 | }
|
||||||
vlib/v/checker/tests/str_interpol_invalid_err.vv:15:25: error: illegal format specifier `o` for type `SumType`
|
vlib/v/checker/tests/str_interpol_invalid_err.vv:15:25: error: illegal format specifier `o` for type `SumType`
|
||||||
13 | //_ = '${{"a": "b"}:x}'
|
13 | _ = '${{"a": "b"}:x}'
|
||||||
14 | //_ = '${Alias(Foo{}):x}'
|
14 | _ = '${Alias(Foo{}):x}'
|
||||||
15 | _ = '${SumType(int(5)):o}'
|
15 | _ = '${SumType(int(5)):o}'
|
||||||
| ^
|
| ^
|
||||||
16 | }
|
16 | }
|
||||||
|
@ -7,10 +7,10 @@ type SumType = Alias | int
|
|||||||
fn main() {
|
fn main() {
|
||||||
_ = '${[1]:x}'
|
_ = '${[1]:x}'
|
||||||
_ = '${[1]!:x}'
|
_ = '${[1]!:x}'
|
||||||
//_ = '${Foo{}:x}'
|
_ = '${Foo{}:x}'
|
||||||
_ = '${[1]:f}'
|
_ = '${[1]:f}'
|
||||||
_ := '${none:F}'
|
_ := '${none:F}'
|
||||||
//_ = '${{"a": "b"}:x}'
|
_ = '${{"a": "b"}:x}'
|
||||||
//_ = '${Alias(Foo{}):x}'
|
_ = '${Alias(Foo{}):x}'
|
||||||
_ = '${SumType(int(5)):o}'
|
_ = '${SumType(int(5)):o}'
|
||||||
}
|
}
|
||||||
|
@ -803,11 +803,13 @@ fn (mut s Scanner) text_scan() token.Token {
|
|||||||
}
|
}
|
||||||
`{` {
|
`{` {
|
||||||
if s.is_inside_string {
|
if s.is_inside_string {
|
||||||
|
prev_char := s.text[s.pos - 1]
|
||||||
|
next_char := s.text[s.pos + 1]
|
||||||
// Handle new `hello {name}` string interpolation
|
// Handle new `hello {name}` string interpolation
|
||||||
if !s.text[s.pos + 1].is_space() && s.text[s.pos - 1] != `$` {
|
if !next_char.is_space() && next_char != `}` && prev_char !in [`$`, `{`] {
|
||||||
return s.new_token(.str_dollar, '', 1)
|
return s.new_token(.str_dollar, '', 1)
|
||||||
}
|
}
|
||||||
if s.text[s.pos - 1] == `$` {
|
if prev_char == `$` {
|
||||||
// Skip { in `${` in strings
|
// Skip { in `${` in strings
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
|
@ -9,12 +9,9 @@ fn test_string_interpolation_inner_cbr() {
|
|||||||
println(s1)
|
println(s1)
|
||||||
assert s1 == '22'
|
assert s1 == '22'
|
||||||
|
|
||||||
/*
|
|
||||||
XTODO
|
|
||||||
s2 := '${St{}}'
|
s2 := '${St{}}'
|
||||||
println(s2)
|
println(s2)
|
||||||
assert s2 == 'St{}'
|
assert s2 == 'St{}'
|
||||||
*/
|
|
||||||
|
|
||||||
s3 := '${{
|
s3 := '${{
|
||||||
'a': 1
|
'a': 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user