From b891c0feab785d5afc69f30aa41d42a72f7a48e8 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 21 Jun 2019 22:40:11 +0100 Subject: [PATCH] Fix ranges in switch statement for strings --- src/build_settings.cpp | 2 +- src/check_stmt.cpp | 7 +++++++ src/parser.cpp | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index a5bcd240d..992443f7c 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -55,7 +55,7 @@ TargetEndianKind target_endians[TargetArch_COUNT] = { -String const ODIN_VERSION = str_lit("0.10.0"); +String const ODIN_VERSION = str_lit("0.10.1"); String cross_compile_target = str_lit(""); String cross_compile_lib_dir = str_lit(""); diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 2ad804139..9a62f4beb 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -746,6 +746,13 @@ void check_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) { if (upper_op == Token_GtEq) { add_constant_switch_case(ctx, &seen, rhs); } + + if (is_type_string(x.type)) { + // NOTE(bill): Force dependency for strings here + add_package_dependency(ctx, "runtime", "string_le"); + add_package_dependency(ctx, "runtime", "string_lt"); + } + } else { Operand y = {}; if (is_type_typeid(x.type)) { diff --git a/src/parser.cpp b/src/parser.cpp index ba2b704f7..89290c9a2 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1982,7 +1982,7 @@ Ast *parse_operand(AstFile *f, bool lhs) { while (allow_token(f, Token_Hash)) { Token tag = expect_token_after(f, Token_Ident, "#"); - if (tag.string == "align") { + if (tag.string == "align") { if (align) { syntax_error(tag, "Duplicate union tag '#%.*s'", LIT(tag.string)); }