File tree Expand file tree Collapse file tree 4 files changed +14
-15
lines changed
chalk-solve/src/clauses/builtin_traits Expand file tree Collapse file tree 4 files changed +14
-15
lines changed Original file line number Diff line number Diff line change @@ -81,7 +81,11 @@ pub fn add_copy_program_clauses<I: Interner>(
81
81
match var_kind {
82
82
VariableKind :: Ty ( TyVariableKind :: Integer )
83
83
| VariableKind :: Ty ( TyVariableKind :: Float ) => builder. push_fact ( trait_ref) ,
84
- VariableKind :: Ty ( _) | VariableKind :: Const ( _) | VariableKind :: Lifetime => { }
84
+
85
+ // Don't know enough
86
+ VariableKind :: Ty ( TyVariableKind :: General ) => return Err ( Floundered ) ,
87
+
88
+ VariableKind :: Const ( _) | VariableKind :: Lifetime => { }
85
89
}
86
90
}
87
91
Original file line number Diff line number Diff line change @@ -157,7 +157,7 @@ pub fn add_fn_trait_program_clauses<I: Interner>(
157
157
Ok ( ( ) )
158
158
}
159
159
// Function traits are non-enumerable
160
- TyKind :: InferenceVar ( ..) | TyKind :: Alias ( ..) => Err ( Floundered ) ,
160
+ TyKind :: InferenceVar ( ..) | TyKind :: BoundVar ( _ ) | TyKind :: Alias ( ..) => Err ( Floundered ) ,
161
161
_ => Ok ( ( ) ) ,
162
162
}
163
163
}
Original file line number Diff line number Diff line change @@ -106,7 +106,11 @@ pub fn add_sized_program_clauses<I: Interner>(
106
106
match var_kind {
107
107
VariableKind :: Ty ( TyVariableKind :: Integer )
108
108
| VariableKind :: Ty ( TyVariableKind :: Float ) => builder. push_fact ( trait_ref) ,
109
- VariableKind :: Ty ( _) | VariableKind :: Const ( _) | VariableKind :: Lifetime => { }
109
+
110
+ // Don't know enough
111
+ VariableKind :: Ty ( TyVariableKind :: General ) => return Err ( Floundered ) ,
112
+
113
+ VariableKind :: Const ( _) | VariableKind :: Lifetime => { }
110
114
}
111
115
}
112
116
Original file line number Diff line number Diff line change @@ -537,28 +537,19 @@ fn builtin_impl_enumeration() {
537
537
538
538
goal {
539
539
exists<T > { T : Copy }
540
- } yields[ SolverChoice :: recursive_default( ) ] {
541
- // FIXME: wrong, e.g. &u8 is also Copy
542
- "Unique; substitution [?0 := Uint(U8)]"
543
- } yields[ SolverChoice :: slg_default( ) ] {
540
+ } yields {
544
541
"Ambiguous; no inference guidance"
545
542
}
546
543
547
544
goal {
548
545
exists<T > { T : Clone }
549
- } yields[ SolverChoice :: recursive_default( ) ] {
550
- // FIXME: wrong, e.g. &u8 is also Clone
551
- "Unique; substitution [?0 := Uint(U8)]"
552
- } yields[ SolverChoice :: slg_default( ) ] {
546
+ } yields {
553
547
"Ambiguous; no inference guidance"
554
548
}
555
549
556
550
goal {
557
551
exists<T > { T : Sized }
558
- } yields[ SolverChoice :: recursive_default( ) ] {
559
- // FIXME: wrong, most of the built-in types are Sized
560
- "No possible solution"
561
- } yields[ SolverChoice :: slg_default( ) ] {
552
+ } yields {
562
553
"Ambiguous; no inference guidance"
563
554
}
564
555
}
You can’t perform that action at this time.
0 commit comments