Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make local scope for else blocks in try/catch/else #51785

Merged
merged 1 commit into from
Oct 24, 2023

Conversation

Pangoraw
Copy link
Contributor

Docs state:

The try, catch, else, and finally clauses each introduce their own
scope blocks.

But it is currently not the case for else blocks

julia> try
       catch
       else
           z = 1
       end
1

julia> z
1

This change actually makes else blocks have their own scope block:

julia> try
       catch
       else
           z = 1
       end
1

julia> z
ERROR: UndefVarError: `z` not defined

[Docs](https://docs.julialang.org/en/v1/manual/control-flow/#else-Clauses) state:

> The try, catch, else, and finally clauses each introduce their own
> scope blocks.

But it is currently not the case for `else` blocks

```julia
julia> try
       catch
       else
           z = 1
       end
1

julia> z
1
```

This change actually makes `else` blocks have their own scope block:

```
julia> try
       catch
       else
           z = 1
       end
1

julia> z
ERROR: UndefVarError: `z` not defined
```
Copy link
Member

@simeonschaub simeonschaub left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

@simeonschaub simeonschaub added compiler:lowering Syntax lowering (compiler front end, 2nd stage) kind:bugfix This change fixes an existing bug backport 1.9 Change should be backported to release-1.9 backport 1.10 Change should be backported to the 1.10 release labels Oct 19, 2023
@KristofferC KristofferC merged commit 17a36ee into JuliaLang:master Oct 24, 2023
10 checks passed
KristofferC pushed a commit that referenced this pull request Oct 24, 2023
[Docs](https://docs.julialang.org/en/v1/manual/control-flow/#else-Clauses)
state:

> The try, catch, else, and finally clauses each introduce their own
> scope blocks.

But it is currently not the case for `else` blocks

```julia
julia> try
       catch
       else
           z = 1
       end
1

julia> z
1
```

This change actually makes `else` blocks have their own scope block:

```julia
julia> try
       catch
       else
           z = 1
       end
1

julia> z
ERROR: UndefVarError: `z` not defined
```

(cherry picked from commit 17a36ee)
@Pangoraw Pangoraw deleted the else_local_scope branch October 25, 2023 12:31
@KristofferC KristofferC removed the backport 1.10 Change should be backported to the 1.10 release label Nov 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport 1.9 Change should be backported to release-1.9 compiler:lowering Syntax lowering (compiler front end, 2nd stage) kind:bugfix This change fixes an existing bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants