Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0236-filter-makedep_side_effect-when-in-erl_abs...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0236-filter-makedep_side_effect-when-in-erl_abstract_code.patch of Package erlang
From e754ac13ebdb6e9483a514ec32392a540f96d4c3 Mon Sep 17 00:00:00 2001 From: Tony Rogvall <tony@rogvall.se> Date: Mon, 26 Oct 2020 15:26:42 +0100 Subject: [PATCH] filter makedep_side_effect when in erl_abstract_code.erl to avoid dializer and others callers to crash --- lib/stdlib/src/erl_abstract_code.erl | 1 + lib/stdlib/test/beam_lib_SUITE.erl | 36 +++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/lib/stdlib/src/erl_abstract_code.erl b/lib/stdlib/src/erl_abstract_code.erl index 6e45f11aa3..8eed00494e 100644 --- a/lib/stdlib/src/erl_abstract_code.erl +++ b/lib/stdlib/src/erl_abstract_code.erl @@ -22,6 +22,7 @@ delete_reports(Opts) -> is_report_option(report) -> true; is_report_option(report_errors) -> true; is_report_option(report_warnings) -> true; +is_report_option(makedep_side_effect) -> true; is_report_option(_) -> false. add_core_returns(Opts) -> diff --git a/lib/stdlib/test/beam_lib_SUITE.erl b/lib/stdlib/test/beam_lib_SUITE.erl index 68d490ddef..92a9916267 100644 --- a/lib/stdlib/test/beam_lib_SUITE.erl +++ b/lib/stdlib/test/beam_lib_SUITE.erl @@ -37,6 +37,7 @@ normal/1, error/1, cmp/1, cmp_literals/1, strip/1, strip_add_chunks/1, otp_6711/1, building/1, md5/1, encrypted_abstr/1, encrypted_abstr_file/1, missing_debug_info_backend/1]). +-export([test_makedep_abstract_code/1]). -export([init_per_testcase/2, end_per_testcase/2]). @@ -46,7 +47,9 @@ suite() -> all() -> [error, normal, cmp, cmp_literals, strip, strip_add_chunks, otp_6711, - building, md5, encrypted_abstr, encrypted_abstr_file, missing_debug_info_backend]. + building, md5, encrypted_abstr, encrypted_abstr_file, + missing_debug_info_backend, test_makedep_abstract_code + ]. groups() -> []. @@ -777,6 +780,37 @@ do_encrypted_abstr_file(Beam, Key) -> {error,beam_lib,Error} = beam_lib:chunks(Beam, [abstract_code]), ok. +test_makedep_abstract_code(Conf) -> + PrivDir = ?privdir, + ErlFile = filename:join(PrivDir, "hello.erl"), + BeamFile = filename:join(PrivDir, "hello.beam"), + file:write_file(ErlFile, + ["-module(hello).\n", + "-export([start/0]).\n", + "start() -> ok.\n" + ]), + DependDir = filename:join(PrivDir, "depend"), + file:make_dir(DependDir), + DependFile = filename:join(DependDir,"hello.d"), + compile:file(ErlFile, + [debug_info, + makedep_side_effect, + {outdir, PrivDir}, + {makedep_output, DependFile}]), + file:delete(DependFile), + file:del_dir(DependDir), + case beam_lib:chunks(BeamFile, [debug_info]) of + {ok, {Module, [{debug_info, {debug_info_v1, + _Backend=erl_abstract_code,Metadata}}]}} -> + SrcOpts = [no_copt, to_core, binary, return_errors, + no_inline, strict_record_tests, strict_record_updates, + dialyzer, no_spawn_compiler_process], + {ok,_} = erl_abstract_code:debug_info(core_v1, Module, Metadata, + SrcOpts), + ok + end. + + write_crypt_file(Contents0) -> Contents = list_to_binary([Contents0]), io:format("~s\n", [binary_to_list(Contents)]), -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor