@@ -416,13 +416,7 @@ fn match_ty<I: Interner>(
416
416
) -> Result < ( ) , Floundered > {
417
417
let interner = builder. interner ( ) ;
418
418
Ok ( match ty. data ( interner) {
419
- TyData :: Apply ( ApplicationTy {
420
- name : TypeName :: Scalar ( _) ,
421
- ..
422
- } ) => {
423
- builder. push_fact ( WellFormed :: Ty ( ty. clone ( ) ) ) ;
424
- }
425
- TyData :: Apply ( application_ty) => match_type_name ( builder, application_ty. name ) ,
419
+ TyData :: Apply ( application_ty) => match_type_name ( builder, interner, application_ty) ,
426
420
TyData :: Placeholder ( _) => {
427
421
builder. push_clause ( WellFormed :: Ty ( ty. clone ( ) ) , Some ( FromEnv :: Ty ( ty. clone ( ) ) ) ) ;
428
422
}
@@ -448,8 +442,12 @@ fn match_ty<I: Interner>(
448
442
} )
449
443
}
450
444
451
- fn match_type_name < I : Interner > ( builder : & mut ClauseBuilder < ' _ , I > , name : TypeName < I > ) {
452
- match name {
445
+ fn match_type_name < I : Interner > (
446
+ builder : & mut ClauseBuilder < ' _ , I > ,
447
+ interner : & I ,
448
+ application : & ApplicationTy < I > ,
449
+ ) {
450
+ match application. name {
453
451
TypeName :: Struct ( struct_id) => match_struct ( builder, struct_id) ,
454
452
TypeName :: OpaqueType ( opaque_ty_id) => builder
455
453
. db
@@ -460,7 +458,9 @@ fn match_type_name<I: Interner>(builder: &mut ClauseBuilder<'_, I>, name: TypeNa
460
458
. db
461
459
. associated_ty_data ( type_id)
462
460
. to_program_clauses ( builder) ,
463
- TypeName :: Scalar ( _) => ( ) ,
461
+ TypeName :: Scalar ( _) => {
462
+ builder. push_fact ( WellFormed :: Ty ( application. clone ( ) . intern ( interner) ) )
463
+ }
464
464
TypeName :: Tuple ( _) => ( ) ,
465
465
}
466
466
}
0 commit comments