From 49ab935ae9268264fe40177690292ea890f6a7e3 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Aug 2023 14:56:12 +0100 Subject: [PATCH] Disallow `for in` in favour of `for _ in` --- core/c/frontend/tokenizer/tokenizer.odin | 2 +- core/fmt/fmt.odin | 8 ++++---- core/image/qoi/qoi.odin | 2 +- core/path/filepath/path.odin | 2 +- core/text/scanner/scanner.odin | 4 ++-- examples/demo/demo.odin | 2 +- src/parser.cpp | 3 +++ 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/core/c/frontend/tokenizer/tokenizer.odin b/core/c/frontend/tokenizer/tokenizer.odin index 52ad42031..2415e06a0 100644 --- a/core/c/frontend/tokenizer/tokenizer.odin +++ b/core/c/frontend/tokenizer/tokenizer.odin @@ -127,7 +127,7 @@ advance_rune :: proc(t: ^Tokenizer) { } advance_rune_n :: proc(t: ^Tokenizer, n: int) { - for in 0..= 10; x /= 10 { n -= 1 } - for in 0.. len(pixels) { return img, .Corrupt } else { - #no_bounds_check for in 0.. ( } buf := make([]byte, size) n := copy(buf, "..") - for in 0.. (ch: rune) { ch = s.ch if n > 0 { prev_s := s^ - for in 0.. (ch: rune) { peek_token :: proc(s: ^Scanner, n := 0) -> (tok: rune) { assert(n >= 0) prev_s := s^ - for in 0..curr_token.kind == Token_in) { Token in_token = expect_token(f, Token_in); + syntax_error(in_token, "Prefer 'for _ in' over 'for in'"); + Ast *rhs = nullptr; bool prev_allow_range = f->allow_range; f->allow_range = true; @@ -4282,6 +4284,7 @@ gb_internal Ast *parse_for_stmt(AstFile *f) { } else { body = parse_block_stmt(f, false); } + return ast_range_stmt(f, token, {}, in_token, rhs, body); }