@@ -1138,42 +1138,42 @@ Atom<Goal>: ast::Expr = {
11381138 <location:@L> "{" <e:DictLiteralValues?> "}" <end_location:@R> => {
11391139 let pairs = e.unwrap_or_default();
11401140
1141- let (keys, values) = match pairs.iter().position(|(k,_)| k.is_none()) {
1142- Some(unpack_idx) => {
1143- let mut pairs = pairs;
1144- let (keys, mut values): (_, Vec<_>) = pairs.drain(..unpack_idx).map(|(k, v)| (*k.unwrap(), v)).unzip();
1145-
1146- fn build_map(items: &mut Vec<(ast::Expr, ast::Expr)>) -> ast::Expr {
1147- let location = items[0].0.location;
1148- let end_location = items[0].0.end_location;
1149- let (keys, values) = items.drain(..).unzip();
1150- ast::Expr {
1151- location,
1152- end_location,
1153- custom: (),
1154- node: ast::ExprKind::Dict { keys, values }
1155- }
1156- }
1157-
1158- let mut items = Vec::new();
1159- for (key, value) in pairs.into_iter() {
1160- if let Some(key) = key {
1161- items.push((*key, value));
1162- continue;
1163- }
1164- if !items.is_empty() {
1165- values.push(build_map(&mut items));
1166- }
1167- values.push(value);
1168- }
1169- if !items.is_empty() {
1170- values.push(build_map(&mut items));
1171- }
1172- (keys, values)
1173- },
1174- None => pairs.into_iter().map(|(k, v)| (*k.unwrap() , v)).unzip()
1175- };
1176-
1141+ // let (keys, values) = match pairs.iter().position(|(k,_)| k.is_none()) {
1142+ // Some(unpack_idx) => {
1143+ // let mut pairs = pairs;
1144+ // let (keys, mut values): (_, Vec<_>) = pairs.drain(..unpack_idx).map(|(k, v)| (*k.unwrap(), v)).unzip();
1145+ //
1146+ // fn build_map(items: &mut Vec<(ast::Expr, ast::Expr)>) -> ast::Expr {
1147+ // let location = items[0].0.location;
1148+ // let end_location = items[0].0.end_location;
1149+ // let (keys, values) = items.drain(..).unzip();
1150+ // ast::Expr {
1151+ // location,
1152+ // end_location,
1153+ // custom: (),
1154+ // node: ast::ExprKind::Dict { keys, values }
1155+ // }
1156+ // }
1157+ //
1158+ // let mut items = Vec::new();
1159+ // for (key, value) in pairs.into_iter() {
1160+ // if let Some(key) = key {
1161+ // items.push((*key, value));
1162+ // continue;
1163+ // }
1164+ // if !items.is_empty() {
1165+ // values.push(build_map(&mut items));
1166+ // }
1167+ // values.push(value);
1168+ // }
1169+ // if !items.is_empty() {
1170+ // values.push(build_map(&mut items));
1171+ // }
1172+ // (keys, values)
1173+ // },
1174+ // None => pairs.into_iter().map(|(k, v)| (k , v)).unzip()
1175+ // };
1176+ let (keys, values) = pairs.into_iter().map(|(k, v)| (k.map(|x| *x), v)).unzip();
11771177 ast::Expr {
11781178 location,
11791179 end_location: Some(end_location),
0 commit comments