diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2023-07-02 23:06:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-02 23:06:35 +0200 |
| commit | 8d9adfd5488271c6e64647875341e244bdc8cb86 (patch) | |
| tree | dd4671de224fbf5a9dbd9e94a2a21b8bd63f3958 | |
| parent | a1eae6304f92b9be1b6c084dbdbd97d62caf02c5 (diff) | |
| parent | a3e2d90f4cc591b7c2a3957aba4dc4a56451d372 (diff) | |
Merge pull request #2623 from laytan/fix-2615-cant-iterate-untyped-string
Fix #2615: can't iterate untyped string
| -rw-r--r-- | src/check_stmt.cpp | 2 | ||||
| -rw-r--r-- | tests/issues/run.bat | 1 | ||||
| -rwxr-xr-x | tests/issues/run.sh | 1 | ||||
| -rw-r--r-- | tests/issues/test_issue_2615.odin | 19 |
4 files changed, 22 insertions, 1 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 964ff1842..a15977b7d 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -1528,7 +1528,7 @@ gb_internal void check_range_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) Type *t = base_type(type_deref(operand.type)); switch (t->kind) { case Type_Basic: - if (t->Basic.kind == Basic_string) { + if (t->Basic.kind == Basic_string || t->Basic.kind == Basic_UntypedString) { is_possibly_addressable = false; array_add(&vals, t_rune); array_add(&vals, t_int); diff --git a/tests/issues/run.bat b/tests/issues/run.bat index bf49bc85b..105d474e3 100644 --- a/tests/issues/run.bat +++ b/tests/issues/run.bat @@ -13,6 +13,7 @@ set COMMON=-collection:tests=..\.. ..\..\..\odin test ..\test_issue_2087.odin %COMMON% -file || exit /b ..\..\..\odin build ..\test_issue_2113.odin %COMMON% -file -debug || exit /b ..\..\..\odin test ..\test_issue_2466.odin %COMMON% -file || exit /b +..\..\..\odin test ..\test_issue_2615.odin %COMMON% -file || exit /b @echo off diff --git a/tests/issues/run.sh b/tests/issues/run.sh index b0c43572f..c4c53e7e1 100755 --- a/tests/issues/run.sh +++ b/tests/issues/run.sh @@ -16,6 +16,7 @@ $ODIN test ../test_issue_2056.odin $COMMON -file $ODIN test ../test_issue_2087.odin $COMMON -file $ODIN build ../test_issue_2113.odin $COMMON -file -debug $ODIN test ../test_issue_2466.odin $COMMON -file +$ODIN test ../test_issue_2615.odin $COMMON -file if [[ $($ODIN build ../test_issue_2395.odin $COMMON -file 2>&1 >/dev/null | grep -c "$NO_NIL_ERR") -eq 2 ]] ; then echo "SUCCESSFUL 1/1" else diff --git a/tests/issues/test_issue_2615.odin b/tests/issues/test_issue_2615.odin new file mode 100644 index 000000000..229e5c35b --- /dev/null +++ b/tests/issues/test_issue_2615.odin @@ -0,0 +1,19 @@ +// Tests issue https://github.com/odin-lang/Odin/issues/2615 +// Cannot iterate over string literals +package test_issues + +import "core:testing" + +@(test) +test_cannot_iterate_over_string_literal :: proc(t: ^testing.T) { + for c, i in "fo世" { + switch i { + case 0: + testing.expect_value(t, c, 'f') + case 1: + testing.expect_value(t, c, 'o') + case 2: + testing.expect_value(t, c, '世') + } + } +} |