diff --git a/core/prelude/types/string.carbon b/core/prelude/types/string.carbon index d204621597af..2e2aa3be7af1 100644 --- a/core/prelude/types/string.carbon +++ b/core/prelude/types/string.carbon @@ -14,7 +14,7 @@ import library "prelude/types/int"; import library "prelude/operators/as"; class String { - fn Size(self) -> u64 { return self.size; } + fn Size(self) -> i64 { return self.size; } impl as Copy { fn Op(self) -> Self { return {.ptr = self.ptr, .size = self.size}; } @@ -22,7 +22,7 @@ class String { // TODO: This should be an array iterator. private var ptr: Char*; // TODO: This should be a word-sized integer. - private var size: u64; + private var size: i64; } impl String as UnformedInit {} diff --git a/toolchain/check/testdata/interop/cpp/macros/macros.carbon b/toolchain/check/testdata/interop/cpp/macros/macros.carbon index fc06d33e9ca9..2e2110532589 100644 --- a/toolchain/check/testdata/interop/cpp/macros/macros.carbon +++ b/toolchain/check/testdata/interop/cpp/macros/macros.carbon @@ -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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// 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 { diff --git a/toolchain/check/testdata/operators/overloaded/string_indexing.carbon b/toolchain/check/testdata/operators/overloaded/string_indexing.carbon index 01b3c9a4a543..9364e63dce5f 100644 --- a/toolchain/check/testdata/operators/overloaded/string_indexing.carbon +++ b/toolchain/check/testdata/operators/overloaded/string_indexing.carbon @@ -83,11 +83,11 @@ fn TestStringIndexing() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // 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: %str.4f8: %ptr.b46 = string_literal "Test" [concrete] -// CHECK:STDOUT: %int_4: %u64 = int_value 4 [concrete] +// CHECK:STDOUT: %int_4: %i64 = int_value 4 [concrete] // CHECK:STDOUT: %String.val: %str.3d4 = struct_value (%str.4f8, %int_4) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -95,7 +95,7 @@ fn TestStringIndexing() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: %str: %ptr.b46 = string_literal "Test" [concrete = constants.%str.4f8] -// CHECK:STDOUT: %int_4: %u64 = int_value 4 [concrete = constants.%int_4] +// CHECK:STDOUT: %int_4: %i64 = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %String.val: %str.3d4 = struct_value (%str, %int_4) [concrete = constants.%String.val] // CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: @@ -109,14 +109,13 @@ fn TestStringIndexing() { // CHECK:STDOUT: %c.patt: %pattern_type.2ff = value_binding_pattern c [concrete] // 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: %ptr.b46: type = ptr_type %char [concrete] // CHECK:STDOUT: %str.4f8: %ptr.b46 = string_literal "Test" [concrete] -// CHECK:STDOUT: %int_4: %u64 = int_value 4 [concrete] +// CHECK:STDOUT: %int_4: %i64 = int_value 4 [concrete] // CHECK:STDOUT: %String.val: %str.3d4 = struct_value (%str.4f8, %int_4) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %IndexWith.type.385: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] // CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] // CHECK:STDOUT: %T.2f3: %ImplicitAs.type.221 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %str.as.IndexWith.impl.At.type.62e: type = fn_type @str.as.IndexWith.impl.At, @str.as.IndexWith.impl(%T.2f3) [symbolic] @@ -149,7 +148,7 @@ fn TestStringIndexing() { // CHECK:STDOUT: fn @TestStringIndexing() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %str.loc5: %ptr.b46 = string_literal "Test" [concrete = constants.%str.4f8] -// CHECK:STDOUT: %int_4.loc5: %u64 = int_value 4 [concrete = constants.%int_4] +// CHECK:STDOUT: %int_4.loc5: %i64 = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %String.val.loc5: %str.3d4 = struct_value (%str.loc5, %int_4.loc5) [concrete = constants.%String.val] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %impl.elem1.loc5: %.197 = impl_witness_access constants.%IndexWith.impl_witness.47e, element1 [concrete = constants.%str.as.IndexWith.impl.At.19c] @@ -169,7 +168,7 @@ fn TestStringIndexing() { // CHECK:STDOUT: %c.patt: %pattern_type.2ff = value_binding_pattern c [concrete = constants.%c.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %str.loc6: %ptr.b46 = string_literal "Test" [concrete = constants.%str.4f8] -// CHECK:STDOUT: %int_4.loc6: %u64 = int_value 4 [concrete = constants.%int_4] +// CHECK:STDOUT: %int_4.loc6: %i64 = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %String.val.loc6: %str.3d4 = struct_value (%str.loc6, %int_4.loc6) [concrete = constants.%String.val] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %impl.elem1.loc6: %.197 = impl_witness_access constants.%IndexWith.impl_witness.47e, element1 [concrete = constants.%str.as.IndexWith.impl.At.19c] diff --git a/toolchain/lower/testdata/primitives/string.carbon b/toolchain/lower/testdata/primitives/string.carbon index edffdcba7110..86d8d4b7a73f 100644 --- a/toolchain/lower/testdata/primitives/string.carbon +++ b/toolchain/lower/testdata/primitives/string.carbon @@ -41,29 +41,29 @@ fn Copy(s: str) -> str { // CHECK:STDOUT: // CHECK:STDOUT: @0 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 // CHECK:STDOUT: @1 = private unnamed_addr constant [6 x i8] c"World\00", align 1 -// CHECK:STDOUT: @String.val.75d.String.val = internal constant { ptr, i64 } { ptr @0, i64 5 } -// CHECK:STDOUT: @String.val.2f1.String.val = internal constant { ptr, i64 } { ptr @1, i64 5 } +// CHECK:STDOUT: @String.val.a16.String.val = internal constant { ptr, i64 } { ptr @0, i64 5 } +// CHECK:STDOUT: @String.val.296.String.val = internal constant { ptr, i64 } { ptr @1, i64 5 } // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CF.Main(ptr) // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CG.Main() #0 !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.75d.String.val), !dbg !7 +// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.a16.String.val), !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CH.Main() #0 !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.75d.String.val), !dbg !10 +// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.a16.String.val), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CI.Main() #0 !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.2f1.String.val), !dbg !13 +// CHECK:STDOUT: call void @_CF.Main(ptr @String.val.296.String.val), !dbg !13 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: