diff options
| author | Sverker Eriksson <[email protected]> | 2019-02-06 19:10:26 +0100 |
|---|---|---|
| committer | Sverker Eriksson <[email protected]> | 2019-02-06 19:10:26 +0100 |
| commit | 98cfd6016f8b40fc97e03b31177d14318349040f (patch) | |
| tree | c0fcdd768071c36bfbcbf186d369d9ca14c47421 /lib/stdlib/src/erl_abstract_code.erl | |
| parent | e2ca71b6e7172b320b5b171359d53a161383fb19 (diff) | |
| parent | 3825199794da28d79b21052a2e69e2335921d55e (diff) | |
| download | otp-98cfd6016f8b40fc97e03b31177d14318349040f.tar.gz otp-98cfd6016f8b40fc97e03b31177d14318349040f.tar.bz2 otp-98cfd6016f8b40fc97e03b31177d14318349040f.zip | |
Merge tag 'OTP-21.2' into sverker/map-from-ks-vs-bug
Diffstat (limited to 'lib/stdlib/src/erl_abstract_code.erl')
| -rw-r--r-- | lib/stdlib/src/erl_abstract_code.erl | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/stdlib/src/erl_abstract_code.erl b/lib/stdlib/src/erl_abstract_code.erl new file mode 100644 index 0000000000..6e45f11aa3 --- /dev/null +++ b/lib/stdlib/src/erl_abstract_code.erl @@ -0,0 +1,28 @@ +-module(erl_abstract_code). +-export([debug_info/4]). + +debug_info(_Format, _Module, {none,_CompilerOpts}, _Opts) -> + {error, missing}; +debug_info(erlang_v1, _Module, {AbstrCode,_CompilerOpts}, _Opts) -> + {ok, AbstrCode}; +debug_info(core_v1, _Module, {AbstrCode,CompilerOpts}, Opts) -> + CoreOpts = add_core_returns(delete_reports(CompilerOpts ++ Opts)), + try compile:noenv_forms(AbstrCode, CoreOpts) of + {ok, _, Core, _} -> {ok, Core}; + _What -> {error, failed_conversion} + catch + error:_ -> {error, failed_conversion} + end; +debug_info(_, _, _, _) -> + {error, unknown_format}. + +delete_reports(Opts) -> + [Opt || Opt <- Opts, not is_report_option(Opt)]. + +is_report_option(report) -> true; +is_report_option(report_errors) -> true; +is_report_option(report_warnings) -> true; +is_report_option(_) -> false. + +add_core_returns(Opts) -> + [to_core, return_errors, return_warnings] ++ Opts. |
