@@ -576,8 +576,9 @@ impl Parser {
576
576
( Token :: Paren ( '<' ) , ast:: ConstructorType :: PartialArray ) => {
577
577
lexer. expect_generic_paren ( '<' ) ?;
578
578
let base = self . type_decl ( lexer, ctx) ?;
579
- let size = if lexer. skip ( Token :: Separator ( ',' ) ) {
579
+ let size = if lexer. end_of_generic_arguments ( ) {
580
580
let expr = self . const_generic_expression ( lexer, ctx) ?;
581
+ lexer. skip ( Token :: Separator ( ',' ) ) ;
581
582
ast:: ArraySize :: Constant ( expr)
582
583
} else {
583
584
ast:: ArraySize :: Dynamic
@@ -1244,6 +1245,7 @@ impl Parser {
1244
1245
let start = lexer. start_byte_offset ( ) ;
1245
1246
let ty = self . type_decl ( lexer, ctx) ?;
1246
1247
let span = lexer. span_from ( start) ;
1248
+ lexer. skip ( Token :: Separator ( ',' ) ) ;
1247
1249
lexer. expect_generic_paren ( '>' ) ?;
1248
1250
Ok ( ( ty, span) )
1249
1251
}
@@ -1436,8 +1438,10 @@ impl Parser {
1436
1438
lexer. expect ( Token :: Separator ( ',' ) ) ?;
1437
1439
let base = self . type_decl ( lexer, ctx) ?;
1438
1440
if let crate :: AddressSpace :: Storage { ref mut access } = space {
1439
- * access = if lexer. skip ( Token :: Separator ( ',' ) ) {
1440
- lexer. next_storage_access ( ) ?
1441
+ * access = if lexer. end_of_generic_arguments ( ) {
1442
+ let result = lexer. next_storage_access ( ) ?;
1443
+ lexer. skip ( Token :: Separator ( ',' ) ) ;
1444
+ result
1441
1445
} else {
1442
1446
crate :: StorageAccess :: LOAD
1443
1447
} ;
@@ -1448,8 +1452,9 @@ impl Parser {
1448
1452
"array" => {
1449
1453
lexer. expect_generic_paren ( '<' ) ?;
1450
1454
let base = self . type_decl ( lexer, ctx) ?;
1451
- let size = if lexer. skip ( Token :: Separator ( ',' ) ) {
1455
+ let size = if lexer. end_of_generic_arguments ( ) {
1452
1456
let size = self . const_generic_expression ( lexer, ctx) ?;
1457
+ lexer. skip ( Token :: Separator ( ',' ) ) ;
1453
1458
ast:: ArraySize :: Constant ( size)
1454
1459
} else {
1455
1460
ast:: ArraySize :: Dynamic
@@ -1461,8 +1466,9 @@ impl Parser {
1461
1466
"binding_array" => {
1462
1467
lexer. expect_generic_paren ( '<' ) ?;
1463
1468
let base = self . type_decl ( lexer, ctx) ?;
1464
- let size = if lexer. skip ( Token :: Separator ( ',' ) ) {
1469
+ let size = if lexer. end_of_generic_arguments ( ) {
1465
1470
let size = self . unary_expression ( lexer, ctx) ?;
1471
+ lexer. skip ( Token :: Separator ( ',' ) ) ;
1466
1472
ast:: ArraySize :: Constant ( size)
1467
1473
} else {
1468
1474
ast:: ArraySize :: Dynamic
0 commit comments