Correctly un-export an env var when it is shadowed

Prior to this fix, if you exported a variable in one scope
and then unexported it in the next, it would remain exported.
Example:

    set -gx VAR 1
    function foo; set -l VAR; env; end
    foo

Here 'VAR' would be exported to 'env' because we failed to
notice that the env var is shadowed by an unexported variable.
This occurred at env var computation time, not in env_set!

Fixes #2132
This commit is contained in:
ridiculousfish
2015-06-12 16:05:59 -07:00
parent 18d7465592
commit f3560b8e62
3 changed files with 24 additions and 5 deletions

View File

@@ -16,6 +16,8 @@ Test 15 pass
Foo change detected
Foo change detected
Test 16 pass
__fish_test_env17=UNSHADOWED
SHADOWED
Testing Universal Startup
1
1