@@ -105,7 +105,7 @@ fn make_or_pattern(
105105}
106106
107107/// Translate a multi-part identifier (for example `Foo.Bar.Baz`) into a
108- /// `member_access_expr` chain rooted at a `name_expr` over the first
108+ /// `member_access_expr` chain rooted at an `identifier` for the first
109109/// part. Panics on an empty input because the grammar's `_+` quantifier
110110/// guarantees at least one part.
111111fn member_chain (
@@ -116,7 +116,7 @@ fn member_chain(
116116 let first = iter
117117 . next ( )
118118 . expect ( "identifier with `part:` must have at least one part" ) ;
119- let init = tree ! ( ( name_expr identifier: ( identifier #{ first} ) ) ) ;
119+ let init = tree ! ( ( identifier #{ first} ) ) ;
120120 iter. fold (
121121 init,
122122 |acc, elem| tree ! ( ( member_access_expr base: { acc} member: ( identifier #{ elem} ) ) ) ,
@@ -186,16 +186,16 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
186186 ( unsupported_node)
187187 ) ,
188188 rule!( ( declReferenceExpr baseName: ( identifier) @name) => expr {
189- tree!( ( name_expr identifier: ( identifier #{ name} ) ) )
189+ tree!( ( identifier #{ name} ) )
190190 } ) ,
191191 // A bare name reference (`x`), and an operator used as a value (`+` in
192192 // `reduce(0, +)`), are both `declReferenceExpr`; its `baseName` is the
193193 // referenced identifier / operator symbol.
194- rule!( ( declReferenceExpr baseName: @name) => ( name_expr identifier: ( identifier #{ name} ) ) ) ,
194+ rule!( ( declReferenceExpr baseName: @name) => ( identifier #{ name} ) ) ,
195195 // A discard `_` used as an expression — e.g. the target of a discarding
196196 // assignment `_ = x`. swift-syntax models it as a `discardAssignmentExpr`;
197- // the target AST represents it as a `name_expr ` over the `_` token.
198- rule!( ( discardAssignmentExpr wildcard: @@w) => ( name_expr identifier: ( identifier #{ w} ) ) ) ,
197+ // the target AST represents it as an `identifier ` over the `_` token.
198+ rule!( ( discardAssignmentExpr wildcard: @@w) => ( identifier #{ w} ) ) ,
199199 // A generic specialization in expression position (`C<Foo>`,
200200 // `Array<Int>`) is represented by swift-syntax as a
201201 // `genericSpecializationExpr`. When used as a call target
@@ -207,7 +207,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
207207 genericArgumentClause: ( genericArgumentClause arguments: ( genericArgument argument: @args) * ) )
208208 =>
209209 ( generic_type_expr
210- base: ( name_expr identifier: ( identifier #{ name} ) )
210+ base: ( identifier #{ name} )
211211 type_argument: { args} )
212212 ) ,
213213 // ---- Operators ----
@@ -342,7 +342,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
342342 result. push( tree!(
343343 ( variable_declaration
344344 modifier: { ctx. outer_modifiers. clone( ) }
345- pattern: ( named_pattern identifier: ( identifier #{ name} ) )
345+ pattern: ( identifier #{ name} )
346346 type : { ty}
347347 value: { val} )
348348 ) ) ;
@@ -450,7 +450,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
450450 rule!(
451451 ( enumCaseParameter firstName: _? @@name type : @ty)
452452 =>
453- ( parameter pattern: ( named_pattern identifier: ( identifier #{ name} ) ) ? type : { ty} )
453+ ( parameter pattern: ( identifier #{ name} ) ? type : { ty} )
454454 ) ,
455455 // An enum element with associated values (`case circle(radius: Double)`)
456456 // becomes a nested `class_like_declaration` whose constructor carries the
@@ -476,7 +476,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
476476 modifier: { ctx. outer_modifiers. clone( ) }
477477 modifier: { chained_modifier( & mut ctx) }
478478 modifier: ( modifier "enum_case" )
479- pattern: ( named_pattern identifier: ( identifier #{ name} ) )
479+ pattern: ( identifier #{ name} )
480480 value: { val} )
481481 ) ,
482482 rule!(
@@ -486,7 +486,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
486486 modifier: { ctx. outer_modifiers. clone( ) }
487487 modifier: { chained_modifier( & mut ctx) }
488488 modifier: ( modifier "enum_case" )
489- pattern: ( named_pattern identifier: ( identifier #{ name} ) ) )
489+ pattern: ( identifier #{ name} ) )
490490 ) ,
491491 // Enum cases. A single `case` declaration may carry modifiers
492492 // (e.g. `indirect`) and list several comma-separated elements; each
@@ -512,7 +512,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
512512 rule!(
513513 ( identifierPattern identifier: @name)
514514 =>
515- ( named_pattern identifier: ( identifier #{ name} ) )
515+ ( identifier #{ name} )
516516 ) ,
517517 // A `let`/`var` value-binding pattern (`let x`) inside a case or `if case`
518518 // preserves the binding specifier around its inner pattern.
@@ -538,7 +538,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
538538 // A wildcard *binding* pattern (`let _ = x`, `for _ in xs`). swift-syntax
539539 // models this as a `wildcardPattern`, distinct from the `_` match form
540540 // handled by the context-aware `discardAssignmentExpr` rule.
541- rule!( ( wildcardPattern) @@wildcard => ( name_expr identifier: ( identifier #{ wildcard} ) ) ) ,
541+ rule!( ( wildcardPattern) @@wildcard => ( identifier #{ wildcard} ) ) ,
542542 // An expression pattern only establishes pattern context; its child
543543 // determines the concrete pattern shape.
544544 rule!( ( expressionPattern expression: @@e) => expr {
@@ -599,7 +599,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
599599 } ;
600600 tree!( ( parameter
601601 external_name: { external}
602- pattern: ( named_pattern identifier: ( identifier #{ name} ) )
602+ pattern: ( identifier #{ name} )
603603 type : { ty}
604604 default : { val} ) )
605605 }
@@ -617,7 +617,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
617617 =>
618618 ( call_expr
619619 callee: ( generic_type_expr
620- base: ( name_expr identifier: ( identifier "Array" ) )
620+ base: ( identifier "Array" )
621621 type_argument: { element} )
622622 argument: { args}
623623 argument: ( argument value: { tc} ) )
@@ -629,7 +629,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
629629 =>
630630 ( call_expr
631631 callee: ( generic_type_expr
632- base: ( name_expr identifier: ( identifier "Array" ) )
632+ base: ( identifier "Array" )
633633 type_argument: { element} )
634634 argument: { args} )
635635 ) ,
@@ -679,7 +679,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
679679 rule!(
680680 ( labeledExpr label: _? @@lbl expression: ( discardAssignmentExpr) @@wildcard)
681681 =>
682- ( argument name: ( identifier #{ lbl} ) ? value: ( name_expr identifier: ( identifier #{ wildcard} ) ) )
682+ ( argument name: ( identifier #{ lbl} ) ? value: ( identifier #{ wildcard} ) )
683683 ) ,
684684 rule!(
685685 ( labeledExpr label: _? @@lbl expression: @val)
@@ -702,7 +702,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
702702 =>
703703 ( member_access_expr
704704 base: ( generic_type_expr
705- base: ( name_expr identifier: ( identifier "Array" ) )
705+ base: ( identifier "Array" )
706706 type_argument: { element} )
707707 member: ( identifier #{ member} ) )
708708 ) ,
@@ -748,7 +748,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
748748 ) ,
749749 // A closure capture (`[weak self]`, `[x]`, `[y = expr]`). The optional
750750 // ownership specifier (`weak`/`unowned`) becomes a modifier; the
751- // captured name becomes the bound `name_expr `; an explicit capture
751+ // captured name becomes the bound `identifier `; an explicit capture
752752 // initializer (`[y = expr]`) becomes the bound value.
753753 rule!(
754754 ( closureCapture
@@ -758,7 +758,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
758758 =>
759759 ( variable_declaration
760760 modifier: ( modifier #{ spec} ) ?
761- pattern: ( named_pattern identifier: ( identifier #{ name} ) )
761+ pattern: ( identifier #{ name} )
762762 value: { val} )
763763 ) ,
764764 // A closure parameter clause (`(x: Int, y)`) unwraps to its parameters.
@@ -768,14 +768,14 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
768768 rule!(
769769 ( closureParameter firstName: @name type : _? @ty)
770770 =>
771- ( parameter pattern: ( named_pattern identifier: ( identifier #{ name} ) ) type : { ty} )
771+ ( parameter pattern: ( identifier #{ name} ) type : { ty} )
772772 ) ,
773773 // A shorthand closure parameter (`x` in `{ x, y in … }`): a bare name
774774 // with no parentheses and no type.
775775 rule!(
776776 ( closureShorthandParameter name: @name)
777777 =>
778- ( parameter pattern: ( named_pattern identifier: ( identifier #{ name} ) ) )
778+ ( parameter pattern: ( identifier #{ name} ) )
779779 ) ,
780780 // ---- Control flow ----
781781 // An `if`/`else` expression. Conditions are joined via `and_chain`; the
@@ -847,17 +847,21 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
847847 ( pattern_guard_expr
848848 value: { val}
849849 pattern: ( call_expr
850- callee: ( member_access_expr base: ( name_expr identifier: ( identifier "Optional" ) ) member: ( identifier "some" ) )
851- argument: ( argument value: ( named_pattern identifier: ( identifier #{ name} ) ) ) ) )
850+ callee: ( member_access_expr base: ( identifier "Optional" ) member: ( identifier "some" ) )
851+ argument: ( argument value: ( expr_pattern
852+ modifier: ( modifier "let" )
853+ expr: ( identifier #{ name} ) ) ) ) )
852854 ) ,
853855 rule!(
854856 ( optionalBindingCondition pattern: ( identifierPattern identifier: @name) )
855857 =>
856858 ( pattern_guard_expr
857- value: ( name_expr identifier: ( identifier #{ name} ) )
859+ value: ( identifier #{ name} )
858860 pattern: ( call_expr
859- callee: ( member_access_expr base: ( name_expr identifier: ( identifier "Optional" ) ) member: ( identifier "some" ) )
860- argument: ( argument value: ( named_pattern identifier: ( identifier #{ name} ) ) ) ) )
861+ callee: ( member_access_expr base: ( identifier "Optional" ) member: ( identifier "some" ) )
862+ argument: ( argument value: ( expr_pattern
863+ modifier: ( modifier "let" )
864+ expr: ( identifier #{ name} ) ) ) ) )
861865 ) ,
862866 // A single condition in an `if`/`while`/`guard` condition list unwraps to
863867 // its inner expression; `and_chain` joins multiple with `&&`.
@@ -931,7 +935,7 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
931935 if ctx. in_pattern {
932936 tree!( ( call_expr
933937 callee: ( member_access_expr
934- base: ( name_expr identifier: ( identifier "Optional" ) )
938+ base: ( identifier "Optional" )
935939 member: ( identifier "some" ) )
936940 argument: ( argument value: { inner} ) ) )
937941 } else {
@@ -991,10 +995,10 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
991995 rule!( ( forceUnwrapExpr expression: @e) => ( unary_expr operator: ( postfix_operator "!" ) operand: { e} ) ) ,
992996 // ---- Imports ----
993997 // An import declaration. The dotted path (a list of
994- // `importPathComponent`s) becomes a `name_expr `/`member_access_expr`
998+ // `importPathComponent`s) becomes an `identifier `/`member_access_expr`
995999 // chain (via `member_chain`). A scoped import (`import struct Foo.Bar`)
9961000 // has an `importKindSpecifier` and binds the last path component as a
997- // `name_expr` ; a plain import (`import Foundation`) has none and uses
1001+ // raw identifier ; a plain import (`import Foundation`) has none and uses
9981002 // a `bulk_importing_pattern` spanning the whole declaration. Any leading
9991003 // attributes (`@_exported`) and access modifiers (`public`) become
10001004 // `modifier`s.
@@ -1006,12 +1010,13 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
10061010 path: ( importPathComponent name: @@parts) * )
10071011 =>
10081012 import_declaration {
1009- let bulk_import = match kind {
1010- None => Some ( tree!( ( bulk_importing_pattern) ) ) ,
1011- Some ( _) => None , // scoped import, no bulk import
1012- } ;
10131013 let last = * parts. last( ) . ok_or( "import has no path" ) ?;
1014- let pattern = tree!( ( named_pattern identifier: ( identifier #{ last} ) sub_pattern: { bulk_import} ) ) ;
1014+ let pattern = match kind {
1015+ None => tree!( ( named_pattern
1016+ identifier: ( identifier #{ last} )
1017+ sub_pattern: ( bulk_importing_pattern) ) ) ,
1018+ Some ( _) => tree!( ( identifier #{ last} ) ) ,
1019+ } ;
10151020 tree!( ( import_declaration
10161021 modifier: ( modifier #{ kind} ) ?
10171022 modifier: { attrs}
@@ -1040,11 +1045,11 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
10401045 genericArgumentClause: ( genericArgumentClause arguments: ( genericArgument argument: @args) * ) )
10411046 =>
10421047 ( generic_type_expr
1043- base: ( name_expr identifier: ( identifier #{ name} ) )
1048+ base: ( identifier #{ name} )
10441049 type_argument: { args} )
10451050 ) ,
10461051 // A named type (`Int`). `identifierType.name` is the type-name token.
1047- rule!( ( identifierType name: @@n) => ( name_expr identifier: ( identifier #{ n} ) ) ) ,
1052+ rule!( ( identifierType name: @@n) => ( identifier #{ n} ) ) ,
10481053 // A qualified type (`Outer.Inner`, `NSString.CompareOptions`). swift-syntax
10491054 // nests these as `memberType` nodes; preserve the nesting as ordinary
10501055 // member access.
@@ -1058,17 +1063,17 @@ fn translation_rules() -> Vec<Rule<SwiftContext>> {
10581063 rule!(
10591064 ( optionalType wrappedType: @w)
10601065 =>
1061- ( generic_type_expr base: ( name_expr identifier: ( identifier "Optional" ) ) type_argument: { w} )
1066+ ( generic_type_expr base: ( identifier "Optional" ) type_argument: { w} )
10621067 ) ,
10631068 rule!(
10641069 ( arrayType element: @e)
10651070 =>
1066- ( generic_type_expr base: ( name_expr identifier: ( identifier "Array" ) ) type_argument: { e} )
1071+ ( generic_type_expr base: ( identifier "Array" ) type_argument: { e} )
10671072 ) ,
10681073 rule!(
10691074 ( dictionaryType key: @k value: @v)
10701075 =>
1071- ( generic_type_expr base: ( name_expr identifier: ( identifier "Dictionary" ) ) type_argument: { k} type_argument: { v} )
1076+ ( generic_type_expr base: ( identifier "Dictionary" ) type_argument: { k} type_argument: { v} )
10721077 ) ,
10731078 // A tuple type (`(Int, String)`) or function type (`(Int) -> Bool`).
10741079 // Both hold their contents as `tupleTypeElement`s, but a tuple element
0 commit comments