mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Add parsing of default value exprs in pattern lists (#7631)
Adds parsing support only for default value expressions in pattern lists, including leaving the default value unspecified with an underscore `_`. Per #7521.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
// 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/function/default_values.carbon
|
||||
// TIP: To dump output, run:
|
||||
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/parse/testdata/function/default_values.carbon
|
||||
|
||||
fn F(x: i32, y: i32 = 0);
|
||||
fn G((x: i32, y: i32) = (1, 2));
|
||||
fn H(unused x: i32 = 25);
|
||||
var b: auto = fn (x: i32 = 0) => x;
|
||||
// Can be used in def to avoid repeating values defined in decl.
|
||||
fn I(x: i32 = _);
|
||||
|
||||
// CHECK:STDOUT: - filename: default_values.carbon
|
||||
// CHECK:STDOUT: ╭─FileStart ''
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'F'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ ├─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ ├─PatternListComma ','
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'y'
|
||||
// CHECK:STDOUT: │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ╭─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntLiteral '0'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')'
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'G'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─TuplePatternStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ├─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─PatternListComma ','
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'y'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ├─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ ╭─TuplePattern ')'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─TupleLiteralStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntLiteral '1'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─TupleLiteralComma ','
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntLiteral '2'
|
||||
// CHECK:STDOUT: │ │ │ ├─TupleLiteral ')'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')'
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'H'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ╭─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ ╭─UnusedPattern 'unused'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntLiteral '25'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')'
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: │ ╭─VariableIntroducer 'var'
|
||||
// CHECK:STDOUT: │ │ ╭─IdentifierNameNotBeforeSignature 'b'
|
||||
// CHECK:STDOUT: │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ ├─AutoTypeLiteral 'auto'
|
||||
// CHECK:STDOUT: │ │ ╭─VarBindingPattern ':'
|
||||
// CHECK:STDOUT: │ ├─VariablePattern 'var'
|
||||
// CHECK:STDOUT: │ ├─VariableInitializer '='
|
||||
// CHECK:STDOUT: │ │ ╭─LambdaIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntLiteral '0'
|
||||
// CHECK:STDOUT: │ │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ │ ├─ExplicitParamList ')'
|
||||
// CHECK:STDOUT: │ │ ├─TerseBodyArrow '=>'
|
||||
// CHECK:STDOUT: │ │ ├─IdentifierNameExpr 'x'
|
||||
// CHECK:STDOUT: │ ├─Lambda 'fn'
|
||||
// CHECK:STDOUT: ├─VariableDecl ';'
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'I'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ ├─BindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ╭─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ │ ├─DefaultValueUnspecified '_'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')'
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
// CHECK:STDOUT: (root)
|
||||
+15
-9
@@ -186,9 +186,9 @@ let {.x = x: i32 foo, .y = y: i32} = {};
|
||||
|
||||
// --- fail_struct_pattern_extra_token_start.carbon
|
||||
|
||||
// CHECK:STDERR: fail_struct_pattern_extra_token_start.carbon:[[@LINE+4]]:26: error: expected `,` or `}` [UnexpectedTokenAfterListElement]
|
||||
// CHECK:STDERR: fail_struct_pattern_extra_token_start.carbon:[[@LINE+4]]:29: error: expected `,` or `}` [UnexpectedTokenAfterListElement]
|
||||
// CHECK:STDERR: let {.x = x: i32, foo .y = y: i32} = {};
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR:
|
||||
let {.x = x: i32, foo .y = y: i32} = {};
|
||||
|
||||
@@ -248,9 +248,9 @@ let {.x foo x: (), .y = y: ()} = {};
|
||||
|
||||
// --- fail_struct_pattern_invalid_field.carbon
|
||||
|
||||
// CHECK:STDERR: fail_struct_pattern_invalid_field.carbon:[[@LINE+4]]:12: error: expected `,` or `}` [UnexpectedTokenAfterListElement]
|
||||
// CHECK:STDERR: fail_struct_pattern_invalid_field.carbon:[[@LINE+4]]:14: error: expected expression [ExpectedExpr]
|
||||
// CHECK:STDERR: let {"foo" = , .x = x:()} = {};
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR:
|
||||
let {"foo" = , .x = x:()} = {};
|
||||
|
||||
@@ -566,7 +566,9 @@ let {var _: i32} = {};
|
||||
// CHECK:STDOUT: ╭─FileStart ''
|
||||
// CHECK:STDOUT: │ ╭─LetIntroducer 'let'
|
||||
// CHECK:STDOUT: │ │ ╭─StructPatternStart '{'
|
||||
// CHECK:STDOUT: │ │ ├─InvalidParse '=' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─InvalidParse '=' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─IdentifierNameExpr 'y'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─StructPattern '}' has_error
|
||||
// CHECK:STDOUT: │ ├─LetInitializer '='
|
||||
// CHECK:STDOUT: │ │ ╭─StructLiteralStart '{'
|
||||
@@ -829,9 +831,11 @@ let {var _: i32} = {};
|
||||
// CHECK:STDOUT: │ │ │ ├─LetBindingPattern ':'
|
||||
// CHECK:STDOUT: │ │ ├─StructPatternDesignatedField '='
|
||||
// CHECK:STDOUT: │ │ ├─PatternListComma ','
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameExpr 'foo'
|
||||
// CHECK:STDOUT: │ │ │ ├─IdentifierNameNotBeforeSignature 'y'
|
||||
// CHECK:STDOUT: │ │ ├─MemberAccessExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameExpr 'foo'
|
||||
// CHECK:STDOUT: │ │ │ ├─IdentifierNameNotBeforeSignature 'y'
|
||||
// CHECK:STDOUT: │ │ │ ╭─MemberAccessExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ ├─IdentifierNameExpr 'y'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '='
|
||||
// CHECK:STDOUT: │ ├─StructPattern '}' has_error
|
||||
// CHECK:STDOUT: │ ├─LetInitializer '='
|
||||
// CHECK:STDOUT: │ │ ╭─StructLiteralStart '{'
|
||||
@@ -954,7 +958,9 @@ let {var _: i32} = {};
|
||||
// CHECK:STDOUT: ╭─FileStart ''
|
||||
// CHECK:STDOUT: │ ╭─LetIntroducer 'let'
|
||||
// CHECK:STDOUT: │ │ ╭─StructPatternStart '{'
|
||||
// CHECK:STDOUT: │ │ ├─StringLiteral '"foo"'
|
||||
// CHECK:STDOUT: │ │ │ ╭─StringLiteral '"foo"'
|
||||
// CHECK:STDOUT: │ │ │ ├─InvalidParse ',' has_error
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ │ ├─PatternListComma ','
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'x'
|
||||
// CHECK:STDOUT: │ │ │ ╭─StructFieldDesignator '.'
|
||||
|
||||
+84
-66
@@ -72,13 +72,16 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'NotDesignator'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'T'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─TypeTypeLiteral 'type'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'T'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─TypeTypeLiteral 'type'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─IntTypeLiteral 'i32'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'U'
|
||||
// CHECK:STDOUT: │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -88,16 +91,18 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'DesignatorInParens'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'V'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'I'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─ParenExprStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'J'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─ParenExpr ')'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'V'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'I'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─ParenExprStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'J'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─ParenExpr ')'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─BoolTypeLiteral 'bool'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -107,14 +112,16 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'DotSelf'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'W'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'K'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─SelfTypeName 'Self'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'W'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'K'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─SelfTypeName 'Self'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─FloatTypeLiteral 'f32'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -124,14 +131,16 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'DotKeyword'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'W'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'K'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'and' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ├─DesignatorExpr '.' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'W'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'K'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'and' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ├─DesignatorExpr '.' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ├─UnsignedIntTypeLiteral 'u8'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -141,15 +150,18 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'PostfixAfterDesignator'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'X'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'L'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'M'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─PostfixOperatorStar '*'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'X'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'L'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'M'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─PostfixOperatorStar '*'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─UnsignedIntTypeLiteral 'u64'
|
||||
// CHECK:STDOUT: │ │ │ ├─PostfixOperatorStar '*'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -159,17 +171,20 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'BinaryOpAfterDesignator'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'Y'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'N'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'O'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'P'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─InfixOperatorPlus '+'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'Y'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'N'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'O'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'P'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─InfixOperatorPlus '+'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─StructLiteralStart '{'
|
||||
// CHECK:STDOUT: │ │ │ ├─StructLiteral '}'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
@@ -179,19 +194,22 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A);
|
||||
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
|
||||
// CHECK:STDOUT: │ ├─IdentifierNameMaybeBeforeSignature 'AfterAnd'
|
||||
// CHECK:STDOUT: │ │ ╭─ExplicitParamListStart '('
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'Z'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'Q'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'R'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─IdentifierNameExpr 'S'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─RequirementImpls 'impls'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─RequirementAnd 'and'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─TupleLiteralStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ ├─TupleLiteral ')'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ ├─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─IdentifierNameNotBeforeSignature 'Z'
|
||||
// CHECK:STDOUT: │ │ │ ├─CompileTimeBindingPatternTypeStart ':'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameExpr 'Q'
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─WhereOperand 'where'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'R'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ├─IdentifierNameExpr 'S'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─RequirementImpls 'impls'
|
||||
// CHECK:STDOUT: │ │ │ │ ├─RequirementAnd 'and'
|
||||
// CHECK:STDOUT: │ │ │ │ │ ╭─TupleLiteralStart '('
|
||||
// CHECK:STDOUT: │ │ │ │ ├─TupleLiteral ')'
|
||||
// CHECK:STDOUT: │ │ │ ├─WhereExpr 'where' has_error
|
||||
// CHECK:STDOUT: │ │ │ ╭─CompileTimeBindingPattern ':' has_error
|
||||
// CHECK:STDOUT: │ │ │ │ ╭─IdentifierNameNotBeforeSignature 'A'
|
||||
// CHECK:STDOUT: │ │ │ ├─DesignatorExpr '.'
|
||||
// CHECK:STDOUT: │ │ ├─DefaultValuePattern '=' has_error
|
||||
// CHECK:STDOUT: │ ├─ExplicitParamList ')' has_error
|
||||
// CHECK:STDOUT: ├─FunctionDecl ';'
|
||||
// CHECK:STDOUT: ├─FileEnd ''
|
||||
|
||||
Reference in New Issue
Block a user