@@ -1888,7 +1888,7 @@ extension Parser {
1888
1888
_ attrs: DeclAttributes ,
1889
1889
_ handle: RecoveryConsumptionHandle
1890
1890
) -> RawOperatorDeclSyntax {
1891
- let ( unexpectedBeforeOperatorKeyword, operatorKeyword) = self . eat ( handle)
1891
+ var ( unexpectedBeforeOperatorKeyword, operatorKeyword) = self . eat ( handle)
1892
1892
let unexpectedBeforeName : RawUnexpectedNodesSyntax ?
1893
1893
let name : RawTokenSyntax
1894
1894
switch self . canRecoverTo ( anyIn: OperatorLike . self) {
@@ -1965,14 +1965,29 @@ extension Parser {
1965
1965
unexpectedAtEnd = nil
1966
1966
}
1967
1967
1968
+ var unexpectedBetweenAttributesAndModifiers : RawUnexpectedNodesSyntax ?
1968
1969
var modifiers : RawModifierListSyntax ? = attrs. modifiers
1970
+
1971
+ let expectedModifiers = [ Keyword . prefix. defaultText, Keyword . postfix. defaultText, Keyword . infix. defaultText]
1972
+
1973
+ if let firstModifier = modifiers? . elements. first {
1974
+ if !expectedModifiers. contains ( firstModifier. name. tokenText) {
1975
+ unexpectedBetweenAttributesAndModifiers = RawUnexpectedNodesSyntax ( [ modifiers] , arena: self . arena)
1976
+ modifiers = nil
1977
+ } else {
1978
+ unexpectedBeforeOperatorKeyword = RawUnexpectedNodesSyntax ( [ unexpectedBeforeOperatorKeyword, RawUnexpectedNodesSyntax ( Array ( modifiers!. elements. dropFirst ( ) ) , arena: self . arena) ] , arena: self . arena)
1979
+ modifiers = RawModifierListSyntax ( elements: [ firstModifier] , arena: self . arena)
1980
+ }
1981
+ }
1982
+
1969
1983
if modifiers == nil , unexpectedBeforeOperatorKeyword == nil {
1970
1984
let missedModifier = RawDeclModifierSyntax ( name: self . missingToken ( . prefix) , detail: nil , arena: self . arena)
1971
1985
modifiers = RawModifierListSyntax ( elements: [ missedModifier] , arena: self . arena)
1972
1986
}
1973
1987
1974
1988
return RawOperatorDeclSyntax (
1975
1989
attributes: attrs. attributes,
1990
+ unexpectedBetweenAttributesAndModifiers,
1976
1991
modifiers: modifiers,
1977
1992
unexpectedBeforeOperatorKeyword,
1978
1993
operatorKeyword: operatorKeyword,
0 commit comments