@@ -93,25 +93,31 @@ impl<'a> Parser<'a> {
9393 }
9494 }
9595
96+ /// Parses list field name: `field: 'field_name'`
97+ fn parse_list_field_name ( & mut self , context : & str ) -> ArrowResult < String > {
98+ self . expect_token ( Token :: Field ) ?;
99+ self . expect_token ( Token :: Colon ) ?;
100+ let field_name = self . parse_single_quoted_string ( context) ?;
101+ Ok ( field_name)
102+ }
103+
96104 /// Parses the List type
97105 fn parse_list ( & mut self ) -> ArrowResult < DataType > {
98106 self . expect_token ( Token :: LParen ) ?;
99107 let nullable = self . nullable ( ) ;
100108 let data_type = self . parse_next_type ( ) ?;
101109
102110 match self . next_token ( ) ? {
103- // default field name
111+ // list with default field name
104112 Token :: RParen => Ok ( DataType :: List ( Arc :: new ( Field :: new_list_field (
105113 data_type, nullable,
106114 ) ) ) ) ,
107- // expects: field: 'field_name'
115+ // list with field name
108116 Token :: Comma => {
109- self . expect_token ( Token :: Field ) ?;
110- self . expect_token ( Token :: Colon ) ?;
111- let field_name = self . parse_single_quoted_string ( "List's field" ) ?;
117+ let field = self . parse_list_field_name ( "List's field" ) ?;
112118 self . expect_token ( Token :: RParen ) ?;
113119 Ok ( DataType :: List ( Arc :: new ( Field :: new (
114- field_name , data_type, nullable,
120+ field , data_type, nullable,
115121 ) ) ) )
116122 }
117123 tok => Err ( make_error (
0 commit comments