File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -31,8 +31,9 @@ fn (mut p Parser) for_stmt() ast.Stmt {
3131 p.close_scope ()
3232 return for_stmt
3333 } else if p.peek_tok.kind in [.decl_assign, .assign, .semicolon]
34- || p.tok.kind == .semicolon || (p.peek_tok.kind == .comma
35- && p.peek_token (2 ).kind != .key_mut && p.peek_token (3 ).kind != .key_in) {
34+ || p.peek_tok.kind.is_assign () || p.tok.kind == .semicolon
35+ || (p.peek_tok.kind == .comma && p.peek_token (2 ).kind != .key_mut
36+ && p.peek_token (3 ).kind != .key_in) {
3637 // `for i := 0; i < 10; i++ {` or `for a,b := 0,1; a < 10; a++ {`
3738 if p.tok.kind == .key_mut {
3839 return p.error ('`mut` is not needed in `for ;;` loops: use `for i := 0; i < n; i ++ {`' )
@@ -45,7 +46,7 @@ fn (mut p Parser) for_stmt() ast.Stmt {
4546 mut has_inc := false
4647 mut is_multi := p.peek_tok.kind == .comma && p.peek_token (2 ).kind != .key_mut
4748 && p.peek_token (3 ).kind != .key_in
48- if p.peek_tok.kind in [.assign, .decl_assign] || is_multi {
49+ if p.peek_tok.kind in [.assign, .decl_assign] || p.peek_tok.kind. is_assign () || is_multi {
4950 init = p.assign_stmt ()
5051 has_init = true
5152 }
Original file line number Diff line number Diff line change 1+ fn test_for_c_init_with_var_assign () {
2+ mut v := 4
3+ mut r := 0
4+ for v >> = 1 ; v != 0 ; v >> = 1 {
5+ r++
6+ }
7+ println (r)
8+ assert r == 2
9+ }
You can’t perform that action at this time.
0 commit comments