all: remove remaining broken escape sequences

pull/6975/head
Alexander Medvednikov 2020-11-27 03:17:07 +01:00
parent 966b95ca4e
commit c27818e247
3 changed files with 21 additions and 22 deletions

View File

@ -804,10 +804,10 @@ fn (mut g Gen) stmt(node ast.Stmt) {
g.write_v_source_line_info(node.pos)
if node.label.len > 0 {
if node.kind == .key_break {
g.writeln('goto $node.label\__break;')
g.writeln('goto ${node.label}__break;')
} else {
// assert node.kind == .key_continue
g.writeln('goto $node.label\__continue;')
g.writeln('goto ${node.label}__continue;')
}
} else {
// continue or break
@ -945,11 +945,11 @@ fn (mut g Gen) stmt(node ast.Stmt) {
g.is_vlines_enabled = true
g.stmts(node.stmts)
if node.label.len > 0 {
g.writeln('$node.label\__continue: {}')
g.writeln('${node.label}__continue: {}')
}
g.writeln('}')
if node.label.len > 0 {
g.writeln('$node.label\__break: {}')
g.writeln('${node.label}__break: {}')
}
}
ast.ForInStmt {
@ -974,11 +974,11 @@ fn (mut g Gen) stmt(node ast.Stmt) {
g.is_vlines_enabled = true
g.stmts(node.stmts)
if node.label.len > 0 {
g.writeln('\t$node.label\__continue: {}')
g.writeln('\t${node.label}__continue: {}')
}
g.writeln('}')
if node.label.len > 0 {
g.writeln('$node.label\__break: {}')
g.writeln('${node.label}__break: {}')
}
}
ast.GlobalDecl {
@ -1178,21 +1178,21 @@ fn (mut g Gen) for_in(it ast.ForInStmt) {
g.write('$atmp_styp $atmp = ')
g.expr(it.cond)
g.writeln(';')
g.writeln('for (int $idx = 0; $idx < $atmp\.key_values.len; ++$idx) {')
g.writeln('\tif ($atmp\.key_values.keys[$idx].str == 0) {continue;}')
g.writeln('for (int $idx = 0; $idx < ${atmp}.key_values.len; ++$idx) {')
g.writeln('\tif (${atmp}.key_values.keys[$idx].str == 0) {continue;}')
if it.key_var != '_' {
key_styp := g.typ(it.key_type)
key := c_name(it.key_var)
// TODO: analyze whether it.key_type has a .clone() method and call .clone() for all types:
if it.key_type == table.string_type {
g.writeln('\t$key_styp $key = /*kkkk*/ string_clone($atmp\.key_values.keys[$idx]);')
g.writeln('\t$key_styp $key = /*key*/ string_clone(${atmp}.key_values.keys[$idx]);')
} else {
g.writeln('\t$key_styp $key = /*kkkk*/ $atmp\.key_values.keys[$idx];')
g.writeln('\t$key_styp $key = /*key*/ ${atmp}.key_values.keys[$idx];')
}
}
if it.val_var != '_' {
val_sym := g.table.get_type_symbol(it.val_type)
valstr := '(void*)($atmp\.key_values.values + $idx * (u32)($atmp\.value_bytes))'
valstr := '(void*)(${atmp}.key_values.values + $idx * (u32)(${atmp}.value_bytes))'
if val_sym.kind == .function {
g.write('\t')
g.write_fn_ptr_decl(val_sym.info as table.FnType, c_name(it.val_var))
@ -1207,11 +1207,11 @@ fn (mut g Gen) for_in(it ast.ForInStmt) {
// g.writeln('string_free(&$key);')
}
if it.label.len > 0 {
g.writeln('\t$it.label\__continue: {}')
g.writeln('\t${it.label}__continue: {}')
}
g.writeln('}')
if it.label.len > 0 {
g.writeln('\t$it.label\__break: {}')
g.writeln('\t${it.label}__break: {}')
}
return
} else if it.cond_type.has_flag(.variadic) {
@ -1240,11 +1240,11 @@ fn (mut g Gen) for_in(it ast.ForInStmt) {
}
g.stmts(it.stmts)
if it.label.len > 0 {
g.writeln('\t$it.label\__continue: {}')
g.writeln('\t${it.label}__continue: {}')
}
g.writeln('}')
if it.label.len > 0 {
g.writeln('\t$it.label\__break: {}')
g.writeln('\t${it.label}__break: {}')
}
}
@ -5566,7 +5566,7 @@ fn (mut g Gen) gen_str_default(sym table.TypeSymbol, styp string, str_fn_name st
convertor = 'bool'
typename_ = 'bool'
} else {
verror("could not generate string method for type \'$styp\'")
verror("could not generate string method for type '$styp'")
}
g.type_definitions.writeln('string ${str_fn_name}($styp it); // auto')
g.auto_str_funcs.writeln('string ${str_fn_name}($styp it) {')

View File

@ -15,8 +15,7 @@ const (
'public', 'return', 'static', 'super', 'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void',
'while', 'with', 'yield']
tabs = ['', '\t', '\t\t', '\t\t\t', '\t\t\t\t', '\t\t\t\t\t', '\t\t\t\t\t\t', '\t\t\t\t\t\t\t',
'\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t'
]
'\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t', '\t\t\t\t\t\t\t\t\t']
)
struct JsGen {
@ -1012,8 +1011,8 @@ fn (mut g JsGen) gen_go_stmt(node ast.GoStmt) {
name = receiver_sym.name + '.' + name
}
// todo: please add a name feild without the mod name for ast.CallExpr
if name.starts_with('$node.call_expr.mod\.') {
name = name[node.call_expr.mod.len+1..]
if name.starts_with('${node.call_expr.mod}.') {
name = name[node.call_expr.mod.len + 1..]
}
g.writeln('await new Promise(function(resolve){')
g.inc_indent()
@ -1245,7 +1244,7 @@ fn (mut g JsGen) gen_call_expr(it ast.CallExpr) {
match it.or_block.kind {
.block {
if it.or_block.stmts.len > 1 {
g.stmts(it.or_block.stmts[..it.or_block.stmts.len-1])
g.stmts(it.or_block.stmts[..it.or_block.stmts.len - 1])
}
g.write('return ')
g.stmt(it.or_block.stmts.last())

View File

@ -580,7 +580,7 @@ fn (mut s Scanner) text_scan() token.Token {
// end of `$expr`
// allow `'$a.b'` and `'$a.c()'`
if s.is_inter_start && next_char == `\\` && s.look_ahead(2) !in [`n`, `\\`, `t`] {
// s.warn('unknown escape sequence \\${s.look_ahead(2)}')
s.warn('unknown escape sequence \\${s.look_ahead(2)}')
}
if s.is_inter_start && next_char == `(` {
if s.look_ahead(2) != `)` {