@@ -972,47 +972,16 @@ impl super::Validator {
972972 accept,
973973 reject,
974974 } => {
975- let accept_inner = & resolver[ accept] ;
976- let reject_inner = & resolver[ reject] ;
977- let condition_ty = & resolver[ condition] ;
978- let condition_good = match * condition_ty {
979- Ti :: Scalar ( Sc {
980- kind : Sk :: Bool ,
981- width : _,
982- } ) => {
983- // When `condition` is a single boolean, `accept` and
984- // `reject` can be vectors or scalars.
985- match * accept_inner {
986- Ti :: Scalar { .. } | Ti :: Vector { .. } => true ,
987- _ => false ,
988- }
989- }
990- Ti :: Vector {
991- size,
992- scalar :
993- Sc {
994- kind : Sk :: Bool ,
995- width : _,
996- } ,
997- } => match * accept_inner {
998- Ti :: Vector {
999- size : other_size, ..
1000- } => size == other_size,
1001- _ => false ,
1002- } ,
1003- _ => false ,
1004- } ;
1005- if accept_inner != reject_inner {
1006- return Err ( ExpressionError :: SelectValuesTypeMismatch {
1007- accept : accept_inner. clone ( ) ,
1008- reject : reject_inner. clone ( ) ,
1009- } ) ;
1010- }
1011- if !condition_good {
1012- return Err ( ExpressionError :: SelectConditionNotABool {
1013- actual : condition_ty. clone ( ) ,
1014- } ) ;
1015- }
975+ self . validate_func_call_with_overloads (
976+ module,
977+ proc:: select:: WgslSymbol ,
978+ proc:: select:: overloads ( ) ,
979+ [ reject, accept, condition]
980+ . iter ( )
981+ . copied ( )
982+ . map ( |arg| ( arg, & resolver[ arg] ) ) ,
983+ ) ?;
984+
1016985 ShaderStages :: all ( )
1017986 }
1018987 E :: Derivative { expr, .. } => {
0 commit comments