mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 18:20:11 +01:00
Split StructComma into StructLiteralComma and StructTypeLiteralComma in order to easily differentiate handling (remains the same in this PR). Add "Literal" to StructField and StructTypeField because it feels inconsistent versus the other non-shared things. StructFieldDesignator remains shared between value literals and type literals. Note I probably would've made StructFieldDesignator non-shared too, but that'd require either a lookahead of 2 (to see the separator`) or a writeback after parsing the separator, neither of which felt especially crucial for this, when what I'm really trying to do is split type literal handling a little further.
35 lines
2.0 KiB
Plaintext
35 lines
2.0 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/struct/one_entry_no_comma.carbon
|
|
// TIP: To dump output, run:
|
|
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/parse/testdata/struct/one_entry_no_comma.carbon
|
|
|
|
var z: {.n: i32} = {.n = 4};
|
|
|
|
// CHECK:STDOUT: - filename: one_entry_no_comma.carbon
|
|
// CHECK:STDOUT: parse_tree: [
|
|
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
|
|
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
|
|
// CHECK:STDOUT: {kind: 'IdentifierName', text: 'z'},
|
|
// CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'},
|
|
// CHECK:STDOUT: {kind: 'IdentifierName', text: 'n'},
|
|
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
|
|
// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'},
|
|
// CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4},
|
|
// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 6},
|
|
// CHECK:STDOUT: {kind: 'BindingPattern', text: ':', subtree_size: 8},
|
|
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
|
|
// CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'},
|
|
// CHECK:STDOUT: {kind: 'IdentifierName', text: 'n'},
|
|
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
|
|
// CHECK:STDOUT: {kind: 'IntLiteral', text: '4'},
|
|
// CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4},
|
|
// CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 6},
|
|
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17},
|
|
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
|
// CHECK:STDOUT: ]
|