mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
v2: raw strings
This commit is contained in:
parent
4d3362358f
commit
5d976d841b
@ -267,7 +267,6 @@ fn test_reverse() {
|
|||||||
for i, _ in d {
|
for i, _ in d {
|
||||||
assert d[i] == b[b.len - i - 1]
|
assert d[i] == b[b.len - i - 1]
|
||||||
}
|
}
|
||||||
|
|
||||||
e := []int
|
e := []int
|
||||||
f := e.reverse()
|
f := e.reverse()
|
||||||
assert f.len == 0
|
assert f.len == 0
|
||||||
|
@ -56,7 +56,9 @@ pub:
|
|||||||
|
|
||||||
pub struct StringLiteral {
|
pub struct StringLiteral {
|
||||||
pub:
|
pub:
|
||||||
val string
|
val string
|
||||||
|
is_raw bool
|
||||||
|
is_c bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// 'name: $name'
|
// 'name: $name'
|
||||||
|
@ -602,7 +602,7 @@ fn (c mut Checker) stmt(node ast.Stmt) {
|
|||||||
value_type := c.table.value_type(typ)
|
value_type := c.table.value_type(typ)
|
||||||
if value_type == table.void_type {
|
if value_type == table.void_type {
|
||||||
typ_sym := c.table.get_type_symbol(typ)
|
typ_sym := c.table.get_type_symbol(typ)
|
||||||
c.error('for in: cannot index $typ_sym.name', it.pos)
|
c.error('for in: cannot index `$typ_sym.name`', it.pos)
|
||||||
}
|
}
|
||||||
it.cond_type = typ
|
it.cond_type = typ
|
||||||
it.kind = sym.kind
|
it.kind = sym.kind
|
||||||
|
@ -594,6 +594,11 @@ pub fn (p mut Parser) name_expr() ast.Expr {
|
|||||||
typ: map_type
|
typ: map_type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Raw string (`s := r'hello \n ')
|
||||||
|
if p.tok.lit == 'r' && p.peek_tok.kind == .string {
|
||||||
|
// && p.prev_tok.kind != .str_dollar {
|
||||||
|
return p.string_expr()
|
||||||
|
}
|
||||||
known_var := p.scope.known_var(p.tok.lit)
|
known_var := p.scope.known_var(p.tok.lit)
|
||||||
if p.peek_tok.kind == .dot && !known_var && (is_c || p.known_import(p.tok.lit) || p.mod.all_after('.') == p.tok.lit) {
|
if p.peek_tok.kind == .dot && !known_var && (is_c || p.known_import(p.tok.lit) || p.mod.all_after('.') == p.tok.lit) {
|
||||||
if is_c {
|
if is_c {
|
||||||
@ -1248,10 +1253,17 @@ fn (p mut Parser) if_expr() ast.IfExpr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn (p mut Parser) string_expr() ast.Expr {
|
fn (p mut Parser) string_expr() ast.Expr {
|
||||||
|
is_raw := p.tok.kind == .name && p.tok.lit == 'r'
|
||||||
|
is_cstr := p.tok.kind == .name && p.tok.lit == 'c'
|
||||||
|
if is_raw || is_cstr {
|
||||||
|
p.next()
|
||||||
|
}
|
||||||
mut node := ast.Expr{}
|
mut node := ast.Expr{}
|
||||||
val := p.tok.lit
|
val := p.tok.lit
|
||||||
node = ast.StringLiteral{
|
node = ast.StringLiteral{
|
||||||
val: val
|
val: val
|
||||||
|
is_raw: is_raw
|
||||||
|
is_c: is_cstr
|
||||||
}
|
}
|
||||||
if p.peek_tok.kind != .str_dollar {
|
if p.peek_tok.kind != .str_dollar {
|
||||||
p.next()
|
p.next()
|
||||||
|
Loading…
Reference in New Issue
Block a user