We're updating the issue view to help you get more done. 

Shadowing bindings does not work as expected

Description

This is a bug with core.match, or (far less likely) with the macro expansion in Clojure.

This code:

```
(let [foo [:bar :baz]]
(match foo
[:bar boo] boo
:else :got-else))
```

returns `:baz`. While this code:

```
(let [foo [:bar :baz]]
(match foo
[:bar foo] foo
:else :got-else))
```

returns `:got-else`.

They should be equal, since the `foo` in the match should shadow the `foo` in
the let. In fact, when running `macroexpand-1` on these forms, they only differ in
the gensym numbers and the letter `f` vs `b` in `foo` and `bar`.

I have created a repo that reproduces the bug:

https://github.com/magnars/bug-examples/tree/core-match-shadow-bindings

Environment

None

Status

Assignee

David Nolen

Reporter

import

Labels

None

Approval

None

Patch

None

Priority

Critical