diff options
author | Nadrieril | 2019-08-15 22:03:41 +0200 |
---|---|---|
committer | Nadrieril | 2019-08-15 22:04:39 +0200 |
commit | 9e38d92bf481da8e34081c81c813acd802efa016 (patch) | |
tree | e274092f5d69284745e23afa122e11ce730074ac /dhall | |
parent | b8234f63c27eb83ff54f719bf51bf3c969c36a3b (diff) |
Fix variable substitution
I have no idea how this didn't get caught before
Diffstat (limited to 'dhall')
-rw-r--r-- | dhall/src/core/value.rs | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/dhall/src/core/value.rs b/dhall/src/core/value.rs index 036a20c..75ef5a5 100644 --- a/dhall/src/core/value.rs +++ b/dhall/src/core/value.rs @@ -436,10 +436,8 @@ impl Subst<Typed> for Value { t.subst_shift(var, val), e.subst_shift(&var.under_binder(x), &val.under_binder(x)), ), - Value::Var(v) => match v.shift(-1, var) { - None => val.to_value().clone(), - Some(newvar) => Value::Var(newvar), - }, + Value::Var(v) if v == var => val.to_value(), + Value::Var(v) => Value::Var(v.shift(-1, var).unwrap()), Value::Const(c) => Value::Const(*c), Value::BoolLit(b) => Value::BoolLit(*b), Value::NaturalLit(n) => Value::NaturalLit(*n), |