From 9a2c24e97a1fc946daeed72c6773e44b751fb80e Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Fri, 8 Nov 2019 20:32:54 -0500 Subject: [PATCH] Fix some constraint gen things --- src/can/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/can/mod.rs b/src/can/mod.rs index 480dcdb0c0..bdbca38330 100644 --- a/src/can/mod.rs +++ b/src/can/mod.rs @@ -469,7 +469,9 @@ fn canonicalize_expr( // (However, still include it in scope, because you *can* recursively refer to yourself.) let mut shadowable_idents = scope.idents.clone(); remove_idents(&loc_pattern.value, &mut shadowable_idents); - let pattern_expected = panic!("TODO implement constraint gen for functions"); + + let pattern_var = subs.mk_flex_var(); + let pattern_expected = PExpected::NoExpectation(Type::Variable(pattern_var)); let (can_arg, state) = canonicalize_pattern( env, @@ -481,8 +483,6 @@ fn canonicalize_expr( pattern_expected, ); - panic!("TODO use state to add to constraints"); - can_args.push(can_arg); } @@ -1442,8 +1442,8 @@ fn can_defs<'a>( scope.idents = union_pairs(scope.idents, assigned_idents.iter()); // Used in canonicalization - let refs_by_assignment: MutMap, References)> = MutMap::default(); - let can_assignments_by_symbol: MutMap, Located)> = + let mut refs_by_assignment: MutMap, References)> = MutMap::default(); + let mut can_assignments_by_symbol: MutMap, Located)> = MutMap::default(); // Used in constraint generation @@ -1554,7 +1554,8 @@ fn can_defs<'a>( let mut shadowable_idents = scope.idents.clone(); remove_idents(&loc_pattern.value, &mut shadowable_idents); - let pattern_expected = panic!("TODO need to finish constraining this pattern"); + let pattern_var = subs.mk_flex_var(); + let pattern_expected = PExpected::NoExpectation(Type::Variable(pattern_var)); let (loc_can_pattern, state) = canonicalize_pattern( env, @@ -1565,7 +1566,6 @@ fn can_defs<'a>( &mut shadowable_idents, pattern_expected, ); - panic!("TODO do something with state here"); let mut renamed_closure_assignment: Option<&Symbol> = None; // Give closures names (and tail-recursive status) where appropriate.