File tree Expand file tree Collapse file tree
crates/wasmtime/src/runtime/component
tests/misc_testsuite/component-model Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1045,13 +1045,10 @@ fn load_variant(
10451045 u32:: linear_lift_from_memory ( cx, InterfaceType :: U32 , & bytes[ ..4 ] ) ?
10461046 }
10471047 } ;
1048- let case_ty = types. nth ( discriminant as usize ) . ok_or_else ( || {
1049- format_err ! (
1050- "discriminant {} out of range [0..{})" ,
1051- discriminant,
1052- types. len( )
1053- )
1054- } ) ?;
1048+ let len = types. len ( ) ;
1049+ let case_ty = types
1050+ . nth ( discriminant as usize )
1051+ . ok_or_else ( || format_err ! ( "discriminant {discriminant} out of range [0..{len})" ) ) ?;
10551052 let value = match case_ty {
10561053 Some ( case_ty) => {
10571054 let payload_offset = usize:: try_from ( info. payload_offset32 ) . unwrap ( ) ;
Original file line number Diff line number Diff line change 353353 (export " t" (instance $t (type $t' )))
354354 ))
355355)
356+
357+ (component definition $A
358+ (type $t' (variant (case " a" u32) (case " b" )))
359+ (export $t " t" (type $t' ))
360+
361+ (core module $m
362+ (memory (export " m" ) 1 )
363+ (func (export " f" ) (param i32 ) (result i32 )
364+ (i32.store8
365+ (i32.const 0 )
366+ (local.get 0 ))
367+ i32.const 0 )
368+ )
369+ (core instance $m (instantiate $m ))
370+ (func (export " f" ) (param " a" u32) (result $t )
371+ (canon lift (core func $m " f" ) (memory $m " m" ))
372+ )
373+ )
374+
375+ (component instance $A $A )
376+ (assert_return (invoke " f" (u32.const 0 )) (variant.const " a" (u32.const 0 )))
377+ (assert_return (invoke " f" (u32.const 1 )) (variant.const " b" ))
378+ (assert_trap (invoke " f" (u32.const 2 )) " discriminant 2 out of range [0..2)" )
You can’t perform that action at this time.
0 commit comments