Change String.size from u64 to i64 (#7614)

`String.size` is likely to be a signed word-sized integer in the future,
(per a Discord conversation). Changing to `i64` now allows us to iterate
over a string's contents using `IntRange`.
This commit is contained in:
Christopher Di Bella
2026-08-07 18:14:50 +00:00
committed by GitHub
parent 06a056d795
commit 8e90e2a855
4 changed files with 34 additions and 35 deletions
+20 -20
View File
@@ -1375,36 +1375,36 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %str.3d4: type = class_type @String [concrete]
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete]
// CHECK:STDOUT: %u64: type = class_type @UInt, @UInt(%int_64) [concrete]
// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete]
// CHECK:STDOUT: %char: type = class_type @Char [concrete]
// CHECK:STDOUT: %ptr.b46: type = ptr_type %char [concrete]
// CHECK:STDOUT: %pattern_type.adf: type = pattern_type %str.3d4 [concrete]
// CHECK:STDOUT: %a.patt: %pattern_type.adf = value_binding_pattern a [concrete]
// CHECK:STDOUT: %str.d76: %ptr.b46 = string_literal "abc" [concrete]
// CHECK:STDOUT: %int_3: %u64 = int_value 3 [concrete]
// CHECK:STDOUT: %String.val.6e1: %str.3d4 = struct_value (%str.d76, %int_3) [concrete]
// CHECK:STDOUT: %int_3: %i64 = int_value 3 [concrete]
// CHECK:STDOUT: %String.val.2dc: %str.3d4 = struct_value (%str.d76, %int_3) [concrete]
// CHECK:STDOUT: %b.patt: %pattern_type.adf = value_binding_pattern b [concrete]
// CHECK:STDOUT: %str.3d5: %ptr.b46 = string_literal "" [concrete]
// CHECK:STDOUT: %int_0: %u64 = int_value 0 [concrete]
// CHECK:STDOUT: %String.val.9fd: %str.3d4 = struct_value (%str.3d5, %int_0) [concrete]
// CHECK:STDOUT: %int_0: %i64 = int_value 0 [concrete]
// CHECK:STDOUT: %String.val.b11: %str.3d4 = struct_value (%str.3d5, %int_0) [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.adf = value_binding_pattern c [concrete]
// CHECK:STDOUT: %str.4fa: %ptr.b46 = string_literal " \t " [concrete]
// CHECK:STDOUT: %String.val.86a: %str.3d4 = struct_value (%str.4fa, %int_3) [concrete]
// CHECK:STDOUT: %String.val.5de: %str.3d4 = struct_value (%str.4fa, %int_3) [concrete]
// CHECK:STDOUT: %d.patt: %pattern_type.adf = value_binding_pattern d [concrete]
// CHECK:STDOUT: %str.475: %ptr.b46 = string_literal "ab" [concrete]
// CHECK:STDOUT: %int_2: %u64 = int_value 2 [concrete]
// CHECK:STDOUT: %String.val.efd: %str.3d4 = struct_value (%str.475, %int_2) [concrete]
// CHECK:STDOUT: %int_2: %i64 = int_value 2 [concrete]
// CHECK:STDOUT: %String.val.c5e: %str.3d4 = struct_value (%str.475, %int_2) [concrete]
// CHECK:STDOUT: %e.patt: %pattern_type.adf = value_binding_pattern e [concrete]
// CHECK:STDOUT: %str.434: %ptr.b46 = string_literal " foo: \"bar\" { 123 } " [concrete]
// CHECK:STDOUT: %int_20: %u64 = int_value 20 [concrete]
// CHECK:STDOUT: %String.val.70a: %str.3d4 = struct_value (%str.434, %int_20) [concrete]
// CHECK:STDOUT: %int_20: %i64 = int_value 20 [concrete]
// CHECK:STDOUT: %String.val.593: %str.3d4 = struct_value (%str.434, %int_20) [concrete]
// CHECK:STDOUT: %f.patt: %pattern_type.adf = value_binding_pattern f [concrete]
// CHECK:STDOUT: %str.fa3: %ptr.b46 = string_literal "\xD0\xB0\xD0\xB1\xD0\xB2" [concrete]
// CHECK:STDOUT: %int_6: %u64 = int_value 6 [concrete]
// CHECK:STDOUT: %String.val.711: %str.3d4 = struct_value (%str.fa3, %int_6) [concrete]
// CHECK:STDOUT: %int_6: %i64 = int_value 6 [concrete]
// CHECK:STDOUT: %String.val.7f0: %str.3d4 = struct_value (%str.fa3, %int_6) [concrete]
// CHECK:STDOUT: %g.patt: %pattern_type.adf = value_binding_pattern g [concrete]
// CHECK:STDOUT: %str.618: %ptr.b46 = string_literal "xy" [concrete]
// CHECK:STDOUT: %String.val.fce: %str.3d4 = struct_value (%str.618, %int_2) [concrete]
// CHECK:STDOUT: %String.val.41b: %str.3d4 = struct_value (%str.618, %int_2) [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -1424,7 +1424,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %Cpp.ref.loc8: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %SimpleString.ref: %str.3d4 = name_ref SimpleString, %String.val.1 [concrete = constants.%String.val.6e1]
// CHECK:STDOUT: %SimpleString.ref: %str.3d4 = name_ref SimpleString, %String.val.1 [concrete = constants.%String.val.2dc]
// CHECK:STDOUT: %str.loc8: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %a: %str.3d4 = wrapper_binding a, %SimpleString.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1432,7 +1432,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc9: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %EmptyString.ref: %str.3d4 = name_ref EmptyString, %String.val.2 [concrete = constants.%String.val.9fd]
// CHECK:STDOUT: %EmptyString.ref: %str.3d4 = name_ref EmptyString, %String.val.2 [concrete = constants.%String.val.b11]
// CHECK:STDOUT: %str.loc9: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %b: %str.3d4 = wrapper_binding b, %EmptyString.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1440,7 +1440,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %EscapeCharacter.ref: %str.3d4 = name_ref EscapeCharacter, %String.val.3 [concrete = constants.%String.val.86a]
// CHECK:STDOUT: %EscapeCharacter.ref: %str.3d4 = name_ref EscapeCharacter, %String.val.3 [concrete = constants.%String.val.5de]
// CHECK:STDOUT: %str.loc10: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %c: %str.3d4 = wrapper_binding c, %EscapeCharacter.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1448,7 +1448,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc11: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %Concatenated.ref: %str.3d4 = name_ref Concatenated, %String.val.4 [concrete = constants.%String.val.efd]
// CHECK:STDOUT: %Concatenated.ref: %str.3d4 = name_ref Concatenated, %String.val.4 [concrete = constants.%String.val.c5e]
// CHECK:STDOUT: %str.loc11: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %d: %str.3d4 = wrapper_binding d, %Concatenated.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1456,7 +1456,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc12: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %RawString.ref: %str.3d4 = name_ref RawString, %String.val.5 [concrete = constants.%String.val.70a]
// CHECK:STDOUT: %RawString.ref: %str.3d4 = name_ref RawString, %String.val.5 [concrete = constants.%String.val.593]
// CHECK:STDOUT: %str.loc12: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %e: %str.3d4 = wrapper_binding e, %RawString.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1464,7 +1464,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc13: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %Utf8String.ref: %str.3d4 = name_ref Utf8String, %String.val.6 [concrete = constants.%String.val.711]
// CHECK:STDOUT: %Utf8String.ref: %str.3d4 = name_ref Utf8String, %String.val.6 [concrete = constants.%String.val.7f0]
// CHECK:STDOUT: %str.loc13: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %f: %str.3d4 = wrapper_binding f, %Utf8String.ref
// CHECK:STDOUT: name_binding_decl {
@@ -1472,7 +1472,7 @@ let _: C(1) = {} as C(Cpp.COUNT);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %Indirect.ref: %str.3d4 = name_ref Indirect, %String.val.7 [concrete = constants.%String.val.fce]
// CHECK:STDOUT: %Indirect.ref: %str.3d4 = name_ref Indirect, %String.val.7 [concrete = constants.%String.val.41b]
// CHECK:STDOUT: %str.loc14: type = type_literal constants.%str.3d4 [concrete = constants.%str.3d4]
// CHECK:STDOUT: %g: %str.3d4 = wrapper_binding g, %Indirect.ref
// CHECK:STDOUT: name_binding_decl {