mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #2623 from laytan/fix-2615-cant-iterate-untyped-string
Fix #2615: can't iterate untyped string
This commit is contained in:
+1
-1
@@ -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));
|
Type *t = base_type(type_deref(operand.type));
|
||||||
switch (t->kind) {
|
switch (t->kind) {
|
||||||
case Type_Basic:
|
case Type_Basic:
|
||||||
if (t->Basic.kind == Basic_string) {
|
if (t->Basic.kind == Basic_string || t->Basic.kind == Basic_UntypedString) {
|
||||||
is_possibly_addressable = false;
|
is_possibly_addressable = false;
|
||||||
array_add(&vals, t_rune);
|
array_add(&vals, t_rune);
|
||||||
array_add(&vals, t_int);
|
array_add(&vals, t_int);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ set COMMON=-collection:tests=..\..
|
|||||||
..\..\..\odin test ..\test_issue_2087.odin %COMMON% -file || exit /b
|
..\..\..\odin test ..\test_issue_2087.odin %COMMON% -file || exit /b
|
||||||
..\..\..\odin build ..\test_issue_2113.odin %COMMON% -file -debug || 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_2466.odin %COMMON% -file || exit /b
|
||||||
|
..\..\..\odin test ..\test_issue_2615.odin %COMMON% -file || exit /b
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ $ODIN test ../test_issue_2056.odin $COMMON -file
|
|||||||
$ODIN test ../test_issue_2087.odin $COMMON -file
|
$ODIN test ../test_issue_2087.odin $COMMON -file
|
||||||
$ODIN build ../test_issue_2113.odin $COMMON -file -debug
|
$ODIN build ../test_issue_2113.odin $COMMON -file -debug
|
||||||
$ODIN test ../test_issue_2466.odin $COMMON -file
|
$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
|
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"
|
echo "SUCCESSFUL 1/1"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -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, '世')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user