diff options
author | Björn Gustavsson <[email protected]> | 2014-02-05 14:01:00 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2014-02-05 14:01:00 +0100 |
commit | 1375078619eb547eecdd5e0e155c00c39dd2d493 (patch) | |
tree | 949892e4e1f1d4d65a6dd9b3ccb408812492c7ab /lib/compiler/src | |
parent | 8d71ab498974b5f0623eac50c4f94f62fc229a94 (diff) | |
parent | 4aeef6279f19a15c728befe817d78d669bb5d1fd (diff) | |
download | otp-1375078619eb547eecdd5e0e155c00c39dd2d493.tar.gz otp-1375078619eb547eecdd5e0e155c00c39dd2d493.tar.bz2 otp-1375078619eb547eecdd5e0e155c00c39dd2d493.zip |
Merge branch 'bjorn/eep37/OTP-11537'
* bjorn/eep37/OTP-11537:
Issue a warning when a named fun is constructed but not used
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/sys_core_fold.erl | 4 | ||||
-rw-r--r-- | lib/compiler/src/v3_core.erl | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/compiler/src/sys_core_fold.erl b/lib/compiler/src/sys_core_fold.erl index d1eec9e347..9ce6bb48bf 100644 --- a/lib/compiler/src/sys_core_fold.erl +++ b/lib/compiler/src/sys_core_fold.erl @@ -305,6 +305,10 @@ expr(#c_let{}=Let, Ctxt, Sub) -> %% Now recursively re-process the new expression. expr(Expr, Ctxt, sub_new_preserve_types(Sub)) end; +expr(#c_letrec{body=#c_var{}}=Letrec, effect, _Sub) -> + %% This is named fun in an 'effect' context. Warn and ignore. + add_warning(Letrec, useless_building), + void(); expr(#c_letrec{defs=Fs0,body=B0}=Letrec, Ctxt, Sub) -> Fs1 = map(fun ({Name,Fb}) -> {Name,expr(Fb, {letrec,Ctxt}, Sub)} diff --git a/lib/compiler/src/v3_core.erl b/lib/compiler/src/v3_core.erl index e30bfa729c..59863f52ec 100644 --- a/lib/compiler/src/v3_core.erl +++ b/lib/compiler/src/v3_core.erl @@ -2088,7 +2088,8 @@ cexpr(#ifun{anno=#a{us=Us0}=A0,name={named,Name},fc=#iclause{pats=Ps}}=Fun0, RecVar = #c_var{name={Name,length(Ps)}}, Let = #c_let{vars=[#c_var{name=Name}],arg=RecVar,body=Body}, CFun1 = CFun0#c_fun{body=Let}, - Letrec = #c_letrec{defs=[{RecVar,CFun1}], + Letrec = #c_letrec{anno=A0#a.anno, + defs=[{RecVar,CFun1}], body=RecVar}, {Letrec,[],Us1,St1} end; |