@@ -1659,6 +1659,7 @@ extension Parser {
16591659 struct AccessorIntroducer {
16601660 var attributes : RawAttributeListSyntax
16611661 var modifier : RawDeclModifierSyntax ?
1662+ var yielding : RawAccessorYieldingModifierSyntax ?
16621663 var kind : AccessorDeclSyntax . AccessorSpecifierOptions
16631664 var unexpectedBeforeToken : RawUnexpectedNodesSyntax ?
16641665 var token : RawTokenSyntax
@@ -1671,7 +1672,7 @@ extension Parser {
16711672 var look = self . lookahead ( )
16721673 let _ = look. consumeAttributeList ( )
16731674 let hasModifier = look. consume ( ifAnyIn: AccessorModifier . self) != nil
1674- let yielding = look. consume ( if: TokenSpec ( . yielding) ) != nil
1675+ let hasYielding = look. consume ( if: TokenSpec ( . yielding) ) != nil
16751676 guard let ( kind, _) = look. at ( anyIn: AccessorDeclSyntax . AccessorSpecifierOptions. self) ?? forcedKind else {
16761677 return nil
16771678 }
@@ -1697,27 +1698,24 @@ extension Parser {
16971698 modifier = nil
16981699 }
16991700
1700- if yielding {
1701- _ = self . expect ( TokenSpec ( . yielding) )
1701+ let yielding : RawAccessorYieldingModifierSyntax ?
1702+ if hasYielding {
1703+ let ( unexpectedBeforeYieldingName, yieldingName) = self . expect ( TokenSpec ( . yielding) )
1704+ yielding = RawAccessorYieldingModifierSyntax (
1705+ unexpectedBeforeYieldingName,
1706+ name: yieldingName,
1707+ arena: self . arena
1708+ )
1709+ } else {
1710+ yielding = nil
17021711 }
17031712
17041713 let ( unexpectedBeforeIntroducer, introducer) = self . expect ( kind. spec)
17051714
1706- // Map `yielding borrow` => `read`, etc.
1707- let resolvedKind : AccessorDeclSyntax . AccessorSpecifierOptions
1708- if yielding {
1709- switch kind {
1710- case . borrow: resolvedKind = . read // `yielding borrow` == `read`
1711- case . mutate: resolvedKind = . modify // `yielding mutate` == `modify`
1712- default : resolvedKind = kind
1713- }
1714- } else {
1715- resolvedKind = kind
1716- }
1717-
17181715 return AccessorIntroducer (
17191716 attributes: attrs,
17201717 modifier: modifier,
1718+ yielding: yielding,
17211719 kind: resolvedKind,
17221720 unexpectedBeforeToken: unexpectedBeforeIntroducer,
17231721 token: introducer
0 commit comments