diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2012-09-28 23:03:29 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-09-30 18:10:40 -0700 |
| commit | c71dc77dac5c8d477fc7df86607f98f2ee784f0f (patch) | |
| tree | 2801a2bdb4692f8a27e4e437d725add6e64da688 /src/rustc | |
| parent | c756ec0c5e0dcc6b3e076167459869043a79731a (diff) | |
| download | rust-c71dc77dac5c8d477fc7df86607f98f2ee784f0f.tar.gz rust-c71dc77dac5c8d477fc7df86607f98f2ee784f0f.zip | |
rustc: uniquely mangle expr_fn names
two closures in the same function body can end up having the same mangled name. This small patch uses gensym to uniquely name each closure body so there won't be conflicts.
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/trans/closure.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/rustc/middle/trans/closure.rs b/src/rustc/middle/trans/closure.rs index 95c98126966..1ab25a18329 100644 --- a/src/rustc/middle/trans/closure.rs +++ b/src/rustc/middle/trans/closure.rs @@ -363,7 +363,7 @@ fn trans_expr_fn(bcx: block, let llfnty = type_of_fn_from_ty(ccx, fty); let sub_path = vec::append_one(bcx.fcx.path, path_name(special_idents::anon)); - let s = mangle_internal_name_by_path(ccx, sub_path); + let s = mangle_internal_name_by_path_and_seq(ccx, sub_path, ~"expr_fn"); let llfn = decl_internal_cdecl_fn(ccx.llmod, s, llfnty); let trans_closure_env = fn@(ck: ty::closure_kind) -> Result { |
