Files
carbon-lang/toolchain/parse/testdata/basics/value_literals.carbon
T
Geoff Romer 6429c1655c Make the tree structure more explicit in parse dumps (#7591)
It's hard to track 2-space indent levels across large vertical gaps, and
it can be hard to suppress the instinct to read the dump as if it were
preorder. This change introduces a new dump mode that addresses both
problems by using box-drawing characters to explicitly represent the
parent-child edges of the tree. This new mode is the default, but the
old behavior remains available with
`--parse-dump-format=yaml-postorder`.
2026-07-31 16:44:18 +00:00

160 lines
6.9 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
//
// AUTOUPDATE
// TIP: To test this file alone, run:
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/parse/testdata/basics/value_literals.carbon
// TIP: To dump output, run:
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/parse/testdata/basics/value_literals.carbon
// --- int_literals.carbon
// 8 and 9 trigger special behavior in APInt when mishandling signed versus
// unsigned, so we pay extra attention to those.
var ints: array(i32, 5) = (
8,
9,
0x8,
0b1000,
39999999999999999993,
);
// --- real_literals.carbon
var reals: array(f64, 7) = (
0.9,
8.0,
80.0,
1.0e7,
1.0e8,
1.0e-8,
39999999999999999993.0e39999999999999999993,
);
// --- bool_literal.carbon
var f: bool = false;
var t: bool = true;
// --- char_literal.carbon
var c: Core.Char = 'c';
// --- string_literal.carbon
var test_str: str = "Test";
// CHECK:STDOUT: - filename: int_literals.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'ints'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ │ ╭─ArrayExprKeyword 'array'
// CHECK:STDOUT: │ │ │ ├─ArrayExprOpenParen '('
// CHECK:STDOUT: │ │ │ ├─IntTypeLiteral 'i32'
// CHECK:STDOUT: │ │ │ ├─ArrayExprComma ','
// CHECK:STDOUT: │ │ │ ├─IntLiteral '5'
// CHECK:STDOUT: │ │ ├─ArrayExpr ')'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ │ ╭─TupleLiteralStart '('
// CHECK:STDOUT: │ │ ├─IntLiteral '8'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─IntLiteral '9'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─IntLiteral '0x8'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─IntLiteral '0b1000'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─IntLiteral '39999999999999999993'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ ├─TupleLiteral ')'
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: real_literals.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'reals'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ │ ╭─ArrayExprKeyword 'array'
// CHECK:STDOUT: │ │ │ ├─ArrayExprOpenParen '('
// CHECK:STDOUT: │ │ │ ├─FloatTypeLiteral 'f64'
// CHECK:STDOUT: │ │ │ ├─ArrayExprComma ','
// CHECK:STDOUT: │ │ │ ├─IntLiteral '7'
// CHECK:STDOUT: │ │ ├─ArrayExpr ')'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ │ ╭─TupleLiteralStart '('
// CHECK:STDOUT: │ │ ├─RealLiteral '0.9'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '8.0'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '80.0'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '1.0e7'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '1.0e8'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '1.0e-8'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ ├─RealLiteral '39999999999999999993.0e39999999999999999993'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ ├─TupleLiteral ')'
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: bool_literal.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'f'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ ├─BoolTypeLiteral 'bool'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ ├─BoolLiteralFalse 'false'
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 't'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ ├─BoolTypeLiteral 'bool'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ ├─BoolLiteralTrue 'true'
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: char_literal.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'c'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ │ ╭─CoreNameExpr 'Core'
// CHECK:STDOUT: │ │ │ ├─IdentifierNameNotBeforeSignature 'Char'
// CHECK:STDOUT: │ │ ├─MemberAccessExpr '.'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ ├─CharLiteral ''c''
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: string_literal.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'test_str'
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
// CHECK:STDOUT: │ │ ├─StringTypeLiteral 'str'
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
// CHECK:STDOUT: │ ├─VariablePattern 'var'
// CHECK:STDOUT: │ ├─VariableInitializer '='
// CHECK:STDOUT: │ ├─StringLiteral '"Test"'
// CHECK:STDOUT: ├─VariableDecl ';'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)