checker: fix const type with raw string literal (#12761)
parent
cd96f980cc
commit
d88e67a5ec
|
@ -8732,7 +8732,7 @@ fn (mut c Checker) eval_comptime_const_expr(expr ast.Expr, nlevel int) ?ast.Comp
|
||||||
return expr.val.i64()
|
return expr.val.i64()
|
||||||
}
|
}
|
||||||
ast.StringLiteral {
|
ast.StringLiteral {
|
||||||
return expr.val
|
return util.smart_quote(expr.val, expr.is_raw)
|
||||||
}
|
}
|
||||||
ast.CharLiteral {
|
ast.CharLiteral {
|
||||||
runes := expr.val.runes()
|
runes := expr.val.runes()
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
const ca = r'x\n'
|
||||||
|
|
||||||
|
const cb = 'x\n'
|
||||||
|
|
||||||
|
const cc = ca + cb
|
||||||
|
|
||||||
|
const cd = cc + cc
|
||||||
|
|
||||||
|
const ce = cd + cd
|
||||||
|
|
||||||
|
fn test_many_pluses_with_raw_string_literal() {
|
||||||
|
a := r'x\n'
|
||||||
|
assert a == ca
|
||||||
|
b := 'x\n'
|
||||||
|
assert b == cb
|
||||||
|
c := a + b
|
||||||
|
assert c == cc
|
||||||
|
d := c + c
|
||||||
|
assert d == cd
|
||||||
|
e := d + d
|
||||||
|
assert e == ce
|
||||||
|
println(e)
|
||||||
|
result := r'x\nx
|
||||||
|
x\nx
|
||||||
|
x\nx
|
||||||
|
x\nx
|
||||||
|
'
|
||||||
|
assert e == result
|
||||||
|
}
|
Loading…
Reference in New Issue