@@ -57,15 +57,21 @@ impl std::error::Error for ChalkError {}
57
57
pub enum RustIrError {
58
58
InvalidParameterName ( Identifier ) ,
59
59
InvalidTraitName ( Identifier ) ,
60
+ InvalidImplName ( Identifier ) ,
61
+ InvalidImplMemberName ( Identifier , Identifier ) ,
60
62
NotTrait ( Identifier ) ,
61
63
NotStruct ( Identifier ) ,
64
+ NotAssociatedType ( Identifier ) ,
65
+ NotAssociatedFn ( Identifier ) ,
66
+ AmbiguousProjection ( Identifier ) ,
62
67
DuplicateOrShadowedParameters ,
63
68
AutoTraitAssociatedTypes ( Identifier ) ,
64
69
AutoTraitParameters ( Identifier ) ,
65
70
AutoTraitWhereClauses ( Identifier ) ,
66
71
InvalidFundamentalTypesParameters ( Identifier ) ,
67
72
NegativeImplAssociatedValues ( Identifier ) ,
68
73
MissingAssociatedType ( Identifier ) ,
74
+ MissingAssociatedFn ( Identifier ) ,
69
75
IncorrectNumberOfVarianceParameters {
70
76
identifier : Identifier ,
71
77
expected : usize ,
@@ -81,6 +87,11 @@ pub enum RustIrError {
81
87
expected : usize ,
82
88
actual : usize ,
83
89
} ,
90
+ IncorrectNumberOfAssociatedFnParameters {
91
+ identifier : Identifier ,
92
+ expected : usize ,
93
+ actual : usize ,
94
+ } ,
84
95
IncorrectParameterKind {
85
96
identifier : Identifier ,
86
97
expected : Kind ,
@@ -96,6 +107,11 @@ pub enum RustIrError {
96
107
expected : Kind ,
97
108
actual : Kind ,
98
109
} ,
110
+ IncorrectAssociatedFnParameterKind {
111
+ identifier : Identifier ,
112
+ expected : Kind ,
113
+ actual : Kind ,
114
+ } ,
99
115
CannotApplyTypeParameter ( Identifier ) ,
100
116
InvalidExternAbi ( Atom ) ,
101
117
}
@@ -107,6 +123,12 @@ impl std::fmt::Display for RustIrError {
107
123
write ! ( f, "invalid parameter name `{}`" , name)
108
124
}
109
125
RustIrError :: InvalidTraitName ( name) => write ! ( f, "invalid trait name `{}`" , name) ,
126
+ RustIrError :: InvalidImplName ( name) => write ! ( f, "invalid impl name `{}`" , name) ,
127
+ RustIrError :: InvalidImplMemberName ( impl_name, member_name) => write ! (
128
+ f,
129
+ "invalid impl member name `{}::{}`" ,
130
+ impl_name, member_name
131
+ ) ,
110
132
RustIrError :: NotTrait ( name) => write ! (
111
133
f,
112
134
"expected a trait, found `{}`, which is not a trait" ,
@@ -117,6 +139,22 @@ impl std::fmt::Display for RustIrError {
117
139
"expected a struct, found `{}`, which is not a struct" ,
118
140
name
119
141
) ,
142
+ RustIrError :: NotAssociatedType ( name) => write ! (
143
+ f,
144
+ "expected an associated type, found `{}`, which is not" ,
145
+ name
146
+ ) ,
147
+ RustIrError :: NotAssociatedFn ( name) => write ! (
148
+ f,
149
+ "expected an associated fn, found `{}`, which is not" ,
150
+ name
151
+ ) ,
152
+ RustIrError :: AmbiguousProjection ( name) => write ! (
153
+ f,
154
+ "projection refers to `{}` which is both a fn and a type" ,
155
+ name
156
+ ) ,
157
+
120
158
RustIrError :: DuplicateOrShadowedParameters => {
121
159
write ! ( f, "duplicate or shadowed parameters" )
122
160
}
@@ -142,6 +180,9 @@ impl std::fmt::Display for RustIrError {
142
180
RustIrError :: MissingAssociatedType ( name) => {
143
181
write ! ( f, "no associated type `{}` defined in trait" , name)
144
182
}
183
+ RustIrError :: MissingAssociatedFn ( name) => {
184
+ write ! ( f, "no associated fn `{}` defined in trait" , name)
185
+ }
145
186
RustIrError :: IncorrectNumberOfVarianceParameters {
146
187
identifier,
147
188
expected,
@@ -169,6 +210,15 @@ impl std::fmt::Display for RustIrError {
169
210
"wrong number of parameters for associated type `{}` (expected {}, got {})" ,
170
211
identifier, expected, actual
171
212
) ,
213
+ RustIrError :: IncorrectNumberOfAssociatedFnParameters {
214
+ identifier,
215
+ expected,
216
+ actual,
217
+ } => write ! (
218
+ f,
219
+ "wrong number of parameters for associated fn `{}` (expected {}, got {})" ,
220
+ identifier, expected, actual
221
+ ) ,
172
222
RustIrError :: IncorrectParameterKind {
173
223
identifier,
174
224
expected,
@@ -196,6 +246,15 @@ impl std::fmt::Display for RustIrError {
196
246
"incorrect associated type parameter kind for `{}`: expected {}, found {}" ,
197
247
identifier, expected, actual
198
248
) ,
249
+ RustIrError :: IncorrectAssociatedFnParameterKind {
250
+ identifier,
251
+ expected,
252
+ actual,
253
+ } => write ! (
254
+ f,
255
+ "incorrect associated fn parameter kind for `{}`: expected {}, found {}" ,
256
+ identifier, expected, actual
257
+ ) ,
199
258
RustIrError :: CannotApplyTypeParameter ( name) => {
200
259
write ! ( f, "cannot apply type parameter `{}`" , name)
201
260
}
0 commit comments