aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/info
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-08-15 15:37:42 +0200
committerBjörn Gustavsson <[email protected]>2014-09-01 12:41:17 +0200
commit81b02eabf162608cba491f1be66dc6226e0aef0c (patch)
tree83061e2f2021c740ddf36e223453d6d5df1e2a38 /lib/stdlib/info
parentc56edba2912e12f15226a1e130fdfac25c29b98f (diff)
downloadotp-81b02eabf162608cba491f1be66dc6226e0aef0c.tar.gz
otp-81b02eabf162608cba491f1be66dc6226e0aef0c.tar.bz2
otp-81b02eabf162608cba491f1be66dc6226e0aef0c.zip
sys_core_fold: Eliminate name capture bug
The scope is supposed to contain all variables that are currently live. We need this information for certain optimizations to avoid capturing a name (a name that is in the scope must be renamed; for an example, see move_let_into_expr/2 or any function that calls sub_subst_scope/1). We also use the scope to optimize sub_del_var/2 and sub_is_val/2. When optimizing case expressions, the scope could be reset to an empty list (because sub_new/0 was called instead of sub_new/1). That could cause name capture if inlining was turned on. As simple way to force this bug is to uncomment the "-define(DEBUG, 1)." near the beginning of the file. Without this correction, most files in the test suite fail to compile.
Diffstat (limited to 'lib/stdlib/info')
0 files changed, 0 insertions, 0 deletions