mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 22:02:33 +01:00
Add a `Core.String` class to the prelude representing a string view, and rename the `String` keyword to `str` and make it evaluate to `Core.String`. `Core.String` is represented as a pair of a pointer to a character (actually, to the first character of a string, but we don't have a way of modeling that yet) and a size (which should be pointer-width, but is currently always a `u64` as we don't have a `usize` equivalent yet). `Core.String` values are generated directly by the toolchain for string literal expressions. This follows the direction established at the recent summit, but the design implemented here has not been through the proposal process yet.
43 lines
1.6 KiB
Plaintext
43 lines
1.6 KiB
Plaintext
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
// ARGS: compile --phase=lex --dump-shared-values %s
|
|
//
|
|
// AUTOUPDATE
|
|
// TIP: To test this file alone, run:
|
|
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/driver/testdata/dump_shared_values.carbon
|
|
// TIP: To dump output, run:
|
|
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/driver/testdata/dump_shared_values.carbon
|
|
|
|
// The value 8 is significant because it can show as negative due to APInt.
|
|
var int1: i32 = 1;
|
|
var int2: i32 = 8;
|
|
var real1: f64 = 1.0;
|
|
var real2: f64 = 0.8e8;
|
|
var real3: f64 = 0.8e9;
|
|
var str1: str = "abc";
|
|
var str2: str = "ab'\"c";
|
|
|
|
// CHECK:STDOUT: ---
|
|
// CHECK:STDOUT: filename: dump_shared_values.carbon
|
|
// CHECK:STDOUT: shared_values:
|
|
// CHECK:STDOUT: ints: {}
|
|
// CHECK:STDOUT: reals:
|
|
// CHECK:STDOUT: real0: 10*10^-1
|
|
// CHECK:STDOUT: real1: 8*10^7
|
|
// CHECK:STDOUT: real2: 8*10^8
|
|
// CHECK:STDOUT: floats: {}
|
|
// CHECK:STDOUT: identifiers:
|
|
// CHECK:STDOUT: identifier0: int1
|
|
// CHECK:STDOUT: identifier1: int2
|
|
// CHECK:STDOUT: identifier2: real1
|
|
// CHECK:STDOUT: identifier3: real2
|
|
// CHECK:STDOUT: identifier4: real3
|
|
// CHECK:STDOUT: identifier5: str1
|
|
// CHECK:STDOUT: identifier6: str2
|
|
// CHECK:STDOUT: strings:
|
|
// CHECK:STDOUT: string0: abc
|
|
// CHECK:STDOUT: string1: ab'"c
|
|
// CHECK:STDOUT: ...
|