mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 16:21:11 +00:00
Weaken variables bound to when expressions
This commit is contained in:
parent
a2f04d1fa3
commit
9462f44bb7
2 changed files with 7 additions and 5 deletions
|
@ -3829,11 +3829,11 @@ fn is_generalizable_expr(mut expr: &Expr) -> bool {
|
||||||
| Str(_)
|
| Str(_)
|
||||||
| List { .. }
|
| List { .. }
|
||||||
| SingleQuote(_, _, _, _)
|
| SingleQuote(_, _, _, _)
|
||||||
|
| When { .. }
|
||||||
=> return false,
|
=> return false,
|
||||||
// TODO(weakening)
|
// TODO(weakening)
|
||||||
| Var(_, _)
|
| Var(_, _)
|
||||||
| AbilityMember(_, _, _)
|
| AbilityMember(_, _, _)
|
||||||
| When { .. }
|
|
||||||
| If { .. }
|
| If { .. }
|
||||||
| LetRec(_, _, _)
|
| LetRec(_, _, _)
|
||||||
| LetNonRec(_, _)
|
| LetNonRec(_, _)
|
||||||
|
|
|
@ -6672,6 +6672,7 @@ mod solve_expr {
|
||||||
main =
|
main =
|
||||||
choice : [T, U]
|
choice : [T, U]
|
||||||
|
|
||||||
|
# Should not get generalized
|
||||||
idChoice =
|
idChoice =
|
||||||
#^^^^^^^^{-1}
|
#^^^^^^^^{-1}
|
||||||
when choice is
|
when choice is
|
||||||
|
@ -6685,7 +6686,7 @@ mod solve_expr {
|
||||||
@r###"
|
@r###"
|
||||||
A#id(4) : A -[[id(4)]]-> A
|
A#id(4) : A -[[id(4)]]-> A
|
||||||
idNotAbility : a -[[idNotAbility(5)]]-> a
|
idNotAbility : a -[[idNotAbility(5)]]-> a
|
||||||
idChoice : a -[[idNotAbility(5)] + a:id(2):1]-> a | a has Id
|
idChoice : A -[[id(4), idNotAbility(5)]]-> A
|
||||||
idChoice : A -[[id(4), idNotAbility(5)]]-> A
|
idChoice : A -[[id(4), idNotAbility(5)]]-> A
|
||||||
"###
|
"###
|
||||||
)
|
)
|
||||||
|
@ -6707,6 +6708,7 @@ mod solve_expr {
|
||||||
main =
|
main =
|
||||||
choice : [T, U]
|
choice : [T, U]
|
||||||
|
|
||||||
|
# Should not get generalized
|
||||||
idChoice =
|
idChoice =
|
||||||
#^^^^^^^^{-1}
|
#^^^^^^^^{-1}
|
||||||
when choice is
|
when choice is
|
||||||
|
@ -6719,7 +6721,7 @@ mod solve_expr {
|
||||||
),
|
),
|
||||||
@r#"
|
@r#"
|
||||||
A#id(4) : A -[[id(4)]]-> A
|
A#id(4) : A -[[id(4)]]-> A
|
||||||
idChoice : a -[[] + a:id(2):1]-> a | a has Id
|
idChoice : A -[[id(4)]]-> A
|
||||||
idChoice : A -[[id(4)]]-> A
|
idChoice : A -[[id(4)]]-> A
|
||||||
"#
|
"#
|
||||||
)
|
)
|
||||||
|
@ -8582,8 +8584,8 @@ mod solve_expr {
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
@r###"
|
@r###"
|
||||||
a : [A Str]*
|
a : [A Str]w_a
|
||||||
b : [A Str]*
|
b : [A Str]w_a
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue