@@ -1136,44 +1136,11 @@ Atom<Goal>: ast::Expr = {
11361136 }.into())
11371137 },
11381138 <location:@L> "{" <e:DictLiteralValues?> "}" <end_location:@R> => {
1139- let pairs = e.unwrap_or_default();
1140-
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();
1139+ let (keys, values) = e
1140+ .unwrap_or_default()
1141+ .into_iter()
1142+ .map(|(k, v)| (k.map(|x| *x), v))
1143+ .unzip();
11771144 ast::Expr {
11781145 location,
11791146 end_location: Some(end_location),
0 commit comments