Skip to content

Commit b53837c

Browse files
committed
better error with mismatched parameters/patterns
1 parent c499bff commit b53837c

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

crates/formality-core/src/judgment.rs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,18 +182,12 @@ macro_rules! push_rules {
182182
$crate::push_rules!(@match inputs() patterns() args $args);
183183
};
184184

185-
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:ident, $($pats:tt)*) args $args:tt) => {
186-
{
187-
let $pat0 = Clone::clone($in0);
188-
$crate::push_rules!(@match inputs($($inputs)*) patterns($($pats)*) args $args);
189-
}
185+
(@match inputs() patterns $patterns:tt args $args:tt) => {
186+
compile_error!("more patterns in rule than arguments on fn")
190187
};
191188

192-
(@match inputs($in0:ident) patterns($pat0:ident) args $args:tt) => {
193-
{
194-
let $pat0 = Clone::clone($in0);
195-
$crate::push_rules!(@match inputs() patterns() args $args);
196-
}
189+
(@match inputs $inputs:tt patterns() args $args:tt) => {
190+
compile_error!("fewer patterns in rule than arguments on fn")
197191
};
198192

199193
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:ident : $ty0:ty, $($pats:tt)*) args $args:tt) => {
@@ -204,23 +198,37 @@ macro_rules! push_rules {
204198
}
205199
};
206200

207-
(@match inputs($in0:ident) patterns($pat0:ident : $ty0:ty) args $args:tt) => {
201+
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:ident : $ty0:ty) args $args:tt) => {
208202
{
209203
if let Some($pat0) = $crate::Downcast::downcast::<$ty0>($in0) {
210-
$crate::push_rules!(@match inputs() patterns() args $args);
204+
$crate::push_rules!(@match inputs($($inputs)*) patterns() args $args);
211205
}
212206
}
213207
};
214208

209+
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:ident, $($pats:tt)*) args $args:tt) => {
210+
{
211+
let $pat0 = Clone::clone($in0);
212+
$crate::push_rules!(@match inputs($($inputs)*) patterns($($pats)*) args $args);
213+
}
214+
};
215+
216+
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:ident) args $args:tt) => {
217+
{
218+
let $pat0 = Clone::clone($in0);
219+
$crate::push_rules!(@match inputs($($inputs)*) patterns() args $args);
220+
}
221+
};
222+
215223
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:pat, $($pats:tt)*) args $args:tt) => {
216224
if let Some($pat0) = $crate::Downcast::downcast(&$in0) {
217225
$crate::push_rules!(@match inputs($($inputs)*) patterns($($pats)*) args $args);
218226
}
219227
};
220228

221-
(@match inputs($in0:ident) patterns($pat0:pat) args $args:tt) => {
229+
(@match inputs($in0:ident $($inputs:tt)*) patterns($pat0:pat) args $args:tt) => {
222230
if let Some($pat0) = $crate::Downcast::downcast(&$in0) {
223-
$crate::push_rules!(@match inputs() patterns() args $args);
231+
$crate::push_rules!(@match inputs($($inputs)*) patterns() args $args);
224232
}
225233
};
226234

0 commit comments

Comments
 (0)