@@ -270,8 +270,8 @@ enum LiteralVector {
270
270
}
271
271
272
272
impl LiteralVector {
273
- #[ allow( clippy:: pattern_type_mismatch) ]
274
- const fn len ( & self ) -> usize {
273
+ #[ allow( clippy:: pattern_type_mismatch, clippy :: missing_const_for_fn ) ]
274
+ fn len ( & self ) -> usize {
275
275
match self {
276
276
LiteralVector :: F64 ( v) => v. len ( ) ,
277
277
LiteralVector :: F32 ( v) => v. len ( ) ,
@@ -441,7 +441,7 @@ impl LiteralVector {
441
441
}
442
442
}
443
443
444
- /// Returns [`ArrayVec`] of [`Literals`]
444
+ /// Returns [`ArrayVec`] of [`Literal`]s
445
445
fn to_literal_vec ( & self ) -> ArrayVec < Literal , { crate :: VectorSize :: MAX } > {
446
446
#[ allow( clippy:: pattern_type_mismatch) ]
447
447
match self {
@@ -459,13 +459,16 @@ impl LiteralVector {
459
459
}
460
460
}
461
461
462
- fn to_expr ( & self , eval : & mut ConstantEvaluator < ' _ > ) -> Expression {
462
+ fn to_expr (
463
+ & self ,
464
+ eval : & mut ConstantEvaluator < ' _ > ,
465
+ ) -> Result < Expression , ConstantEvaluatorError > {
463
466
let lit_vec = self . to_literal_vec ( ) ;
464
467
assert ! ( !lit_vec. is_empty( ) ) ;
465
468
if lit_vec. len ( ) == 1 {
466
- Expression :: Literal ( lit_vec[ 0 ] )
469
+ Ok ( Expression :: Literal ( lit_vec[ 0 ] ) )
467
470
} else {
468
- Expression :: Compose {
471
+ Ok ( Expression :: Compose {
469
472
ty : eval. types . insert (
470
473
Type {
471
474
name : None ,
@@ -483,12 +486,9 @@ impl LiteralVector {
483
486
) ,
484
487
components : lit_vec
485
488
. iter ( )
486
- . map ( |& l| {
487
- eval. expressions
488
- . append ( Expression :: Literal ( l) , Span :: UNDEFINED )
489
- } )
490
- . collect ( ) ,
491
- }
489
+ . map ( |& l| eval. register_evaluated_expr ( Expression :: Literal ( l) , Span :: UNDEFINED ) )
490
+ . collect :: < Result < _ , _ > > ( ) ?,
491
+ } )
492
492
}
493
493
}
494
494
@@ -498,7 +498,7 @@ impl LiteralVector {
498
498
eval : & mut ConstantEvaluator < ' _ > ,
499
499
span : Span ,
500
500
) -> Result < Handle < Expression > , ConstantEvaluatorError > {
501
- let expr = self . to_expr ( eval) ;
501
+ let expr = self . to_expr ( eval) ? ;
502
502
eval. register_evaluated_expr ( expr, span)
503
503
}
504
504
}
0 commit comments