@@ -2484,11 +2484,9 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
2484
2484
"select" => {
2485
2485
let mut args = ctx. prepare_args ( arguments, 3 , span) ;
2486
2486
2487
- let reject_orig = args. next ( ) ?;
2488
- let accept_orig = args. next ( ) ?;
2489
2487
let mut values = [
2490
- self . expression_for_abstract ( reject_orig , ctx) ?,
2491
- self . expression_for_abstract ( accept_orig , ctx) ?,
2488
+ self . expression_for_abstract ( args . next ( ) ? , ctx) ?,
2489
+ self . expression_for_abstract ( args . next ( ) ? , ctx) ?,
2492
2490
] ;
2493
2491
let condition = self . expression ( args. next ( ) ?, ctx) ?;
2494
2492
@@ -2500,18 +2498,15 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
2500
2498
) -> & ' a proc:: TypeResolution {
2501
2499
& ctx. typifier ( ) [ expr]
2502
2500
}
2503
- let diag_deets =
2504
- |ctx : & ExpressionContext < ' _ , ' _ , ' _ > ,
2505
- ty_res : & proc:: TypeResolution ,
2506
- orig_expr| {
2507
- (
2508
- ctx. ast_expressions . get_span ( orig_expr) ,
2509
- format ! ( "`{}`" , ctx. as_diagnostic_display( ty_res) ) ,
2510
- )
2511
- } ;
2512
- for ( & value, orig_value) in
2513
- values. iter ( ) . zip ( [ reject_orig, accept_orig] )
2514
- {
2501
+ let diag_deets = |ctx : & ExpressionContext < ' _ , ' _ , ' _ > ,
2502
+ ty_res : & proc:: TypeResolution ,
2503
+ expr| {
2504
+ (
2505
+ ctx. get_expression_span ( expr) ,
2506
+ format ! ( "`{}`" , ctx. as_diagnostic_display( ty_res) ) ,
2507
+ )
2508
+ } ;
2509
+ for value in values {
2515
2510
ctx. grow_types ( value) ?;
2516
2511
2517
2512
let value_ty_res = expr_ty_res ( ctx, value) ;
@@ -2520,8 +2515,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
2520
2515
. vector_size_and_scalar ( )
2521
2516
. is_none ( )
2522
2517
{
2523
- let ( arg_span, arg_type) =
2524
- diag_deets ( ctx, value_ty_res, orig_value) ;
2518
+ let ( arg_span, arg_type) = diag_deets ( ctx, value_ty_res, value) ;
2525
2519
return Err ( Box :: new ( Error :: SelectUnexpectedArgumentType {
2526
2520
arg_span,
2527
2521
arg_type,
@@ -2533,12 +2527,10 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
2533
2527
. map_err ( |_idx| {
2534
2528
let [ reject, accept] = values;
2535
2529
let [ ( reject_span, reject_type) , ( accept_span, accept_type) ] =
2536
- [ ( reject_orig, reject) , ( accept_orig, accept) ] . map (
2537
- |( orig_expr, expr) | {
2538
- let ty_res = expr_ty_res ( ctx, expr) ;
2539
- diag_deets ( ctx, ty_res, orig_expr)
2540
- } ,
2541
- ) ;
2530
+ [ reject, accept] . map ( |expr| {
2531
+ let ty_res = expr_ty_res ( ctx, expr) ;
2532
+ diag_deets ( ctx, ty_res, expr)
2533
+ } ) ;
2542
2534
Error :: SelectRejectAndAcceptHaveNoCommonType {
2543
2535
reject_span,
2544
2536
reject_type,
0 commit comments