mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 22:02:33 +01:00
We could similarly add others -- this is intended to make it easy to add more that parse essentially the same. The functionality expected is that types will use GetDeclarationContext in order to error on certain functionality in the declaration scope loop. e.g., with how constraints and interfaces currently don't allow definitions. I've only moved out `package` because it's only valid on the top line. It might still be good to parse it later, but with slightly different logic because it would always be an error, and the declaration context isn't quite the right framing for that. Also unifies some errors with `fn`.
22 lines
1.2 KiB
Plaintext
22 lines
1.2 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
|
|
// RUN: %{not} %{carbon-run-parser}
|
|
// CHECK:STDOUT: [
|
|
// CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'},
|
|
// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Bar'},
|
|
// CHECK:STDOUT: {kind: 'InterfaceDeclaration', text: 'interface', has_error: yes, subtree_size: 3},
|
|
// CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'},
|
|
// CHECK:STDOUT: {kind: 'DeclaredName', text: 'Foo'},
|
|
// CHECK:STDOUT: {kind: 'InterfaceDeclaration', text: 'interface', has_error: yes, subtree_size: 3},
|
|
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
|
// CHECK:STDOUT: ]
|
|
|
|
// CHECK:STDERR: {{.*}}/toolchain/parser/testdata/generics/interface/fail_missing_open_curly.carbon:[[@LINE+1]]:15: `interface` should either end with a `;` for a declaration or have a `{ ... }` block for a definition.
|
|
interface Bar Baz {}
|
|
|
|
// CHECK:STDERR: {{.*}}/toolchain/parser/testdata/generics/interface/fail_missing_open_curly.carbon:[[@LINE+1]]:14: `interface` should either end with a `;` for a declaration or have a `{ ... }` block for a definition.
|
|
interface Foo
|