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