@@ -196,36 +196,10 @@ pub fn parse_raw_asm_args<'a>(
196
196
if p. eat_keyword ( exp ! ( ClobberAbi ) ) {
197
197
allow_templates = false ;
198
198
199
- p. expect ( exp ! ( OpenParen ) ) ?;
200
-
201
- // FIXME: why not allow this?
202
- if p. eat ( exp ! ( CloseParen ) ) {
203
- return Err ( p. dcx ( ) . create_err ( errors:: NonABI { span : p. token . span } ) ) ;
204
- }
205
-
206
- let mut new_abis = Vec :: new ( ) ;
207
- while !p. eat ( exp ! ( CloseParen ) ) {
208
- match p. parse_str_lit ( ) {
209
- Ok ( str_lit) => {
210
- new_abis. push ( ( str_lit. symbol_unescaped , str_lit. span ) ) ;
211
- }
212
- Err ( opt_lit) => {
213
- let span = opt_lit. map_or ( p. token . span , |lit| lit. span ) ;
214
- return Err ( p. dcx ( ) . create_err ( errors:: AsmExpectedStringLiteral { span } ) ) ;
215
- }
216
- } ;
217
-
218
- // Allow trailing commas
219
- if p. eat ( exp ! ( CloseParen ) ) {
220
- break ;
221
- }
222
- p. expect ( exp ! ( Comma ) ) ?;
223
- }
224
-
225
199
args. push ( RawAsmArg {
226
- span : span_start. to ( p. prev_token . span ) ,
227
200
attributes : ast:: AttrVec :: new ( ) ,
228
- kind : RawAsmArgKind :: ClobberAbi ( new_abis) ,
201
+ kind : RawAsmArgKind :: ClobberAbi ( parse_clobber_abi ( p) ?) ,
202
+ span : span_start. to ( p. prev_token . span ) ,
229
203
} ) ;
230
204
231
205
continue ;
@@ -655,11 +629,10 @@ fn parse_options<'a>(
655
629
Ok ( ( ) )
656
630
}
657
631
658
- fn parse_clobber_abi < ' a > ( p : & mut Parser < ' a > , args : & mut AsmArgs ) -> PResult < ' a , ( ) > {
659
- let span_start = p. prev_token . span ;
660
-
632
+ fn parse_clobber_abi < ' a > ( p : & mut Parser < ' a > ) -> PResult < ' a , Vec < ( Symbol , Span ) > > {
661
633
p. expect ( exp ! ( OpenParen ) ) ?;
662
634
635
+ // FIXME: why not allow this?
663
636
if p. eat ( exp ! ( CloseParen ) ) {
664
637
return Err ( p. dcx ( ) . create_err ( errors:: NonABI { span : p. token . span } ) ) ;
665
638
}
@@ -683,20 +656,7 @@ fn parse_clobber_abi<'a>(p: &mut Parser<'a>, args: &mut AsmArgs) -> PResult<'a,
683
656
p. expect ( exp ! ( Comma ) ) ?;
684
657
}
685
658
686
- let full_span = span_start. to ( p. prev_token . span ) ;
687
-
688
- match & new_abis[ ..] {
689
- // should have errored above during parsing
690
- [ ] => unreachable ! ( ) ,
691
- [ ( abi, _span) ] => args. clobber_abis . push ( ( * abi, full_span) ) ,
692
- abis => {
693
- for ( abi, span) in abis {
694
- args. clobber_abis . push ( ( * abi, * span) ) ;
695
- }
696
- }
697
- }
698
-
699
- Ok ( ( ) )
659
+ Ok ( new_abis)
700
660
}
701
661
702
662
fn parse_reg < ' a > ( p : & mut Parser < ' a > ) -> PResult < ' a , ast:: InlineAsmRegOrRegClass > {
0 commit comments