Support lexing and parsing positional params (#7651)

This implements lexing and parsing positional parameters such as `$0`.
This commit is contained in:
Özgür T. Önsoy
2026-09-03 19:06:20 +00:00
committed by GitHub
parent 27849b385c
commit 5474347d7d
14 changed files with 282 additions and 8 deletions
+25
View File
@@ -18,6 +18,12 @@ fn foo(bar: i64, baz: i64) {
foo(baz, bar + baz);
}
// --- with_positional_params.carbon
fn foo {
foo($0, $42.0 + $86);
}
// --- with_return_type.carbon
fn foo() -> f64 {
@@ -116,6 +122,25 @@ fn TestRecoveryFromSpuriousEquals();
// CHECK:STDOUT: ├─FunctionDefinition '}'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: with_positional_params.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'
// CHECK:STDOUT: │ ├─IdentifierNameNotBeforeSignature 'foo'
// CHECK:STDOUT: │ ╭─FunctionDefinitionStart '{'
// CHECK:STDOUT: │ │ ╭─IdentifierNameExpr 'foo'
// CHECK:STDOUT: │ │ ╭─CallExprStart '('
// CHECK:STDOUT: │ │ ├─PositionalParamExpr '$0'
// CHECK:STDOUT: │ │ ├─TupleLiteralComma ','
// CHECK:STDOUT: │ │ │ ╭─PositionalParamExpr '$42'
// CHECK:STDOUT: │ │ │ ├─IntLiteral '0'
// CHECK:STDOUT: │ │ │ ╭─MemberAccessExpr '.'
// CHECK:STDOUT: │ │ │ ├─PositionalParamExpr '$86'
// CHECK:STDOUT: │ │ ├─InfixOperatorPlus '+'
// CHECK:STDOUT: │ │ ╭─CallExpr ')'
// CHECK:STDOUT: │ ├─ExprStatement ';'
// CHECK:STDOUT: ├─FunctionDefinition '}'
// CHECK:STDOUT: ├─FileEnd ''
// CHECK:STDOUT: (root)
// CHECK:STDOUT: - filename: with_return_type.carbon
// CHECK:STDOUT: ╭─FileStart ''
// CHECK:STDOUT: │ ╭─FunctionIntroducer 'fn'