Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
1036-compile-make-select_passes-clause-order-ma...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1036-compile-make-select_passes-clause-order-match-the-co.patch of Package erlang
From 9e6c9fd5693e24424f807738fdb46d9db731a4b6 Mon Sep 17 00:00:00 2001 From: Richard Carlsson <carlsson.richard@gmail.com> Date: Thu, 29 Oct 2020 15:09:15 +0100 Subject: [PATCH] compile: make select_passes clause order match the comment text The comment text gives the impression that a pass {Name, Fun} should always work, but if Name matched one of the other passes such as {listing, Ext}, that case would be selected instead, even if the second element was a fun. --- lib/compiler/src/compile.erl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl index a6bf4a187b..d6298fdf93 100644 --- a/lib/compiler/src/compile.erl +++ b/lib/compiler/src/compile.erl @@ -694,6 +694,11 @@ select_passes([{pass,Mod}|Ps], Opts) -> end end, [{Mod,F}|select_passes(Ps, Opts)]; +select_passes([{_,Fun}=P|Ps], Opts) when is_function(Fun) -> + [P|select_passes(Ps, Opts)]; +select_passes([{_,Test,Fun}=P|Ps], Opts) when is_function(Test), + is_function(Fun) -> + [P|select_passes(Ps, Opts)]; select_passes([{src_listing,Ext}|_], _Opts) -> [{listing,fun (St) -> src_listing(Ext, St) end}]; select_passes([{listing,Ext}|_], _Opts) -> @@ -706,8 +711,6 @@ select_passes([{iff,Flag,Pass}|Ps], Opts) -> select_cond(Flag, true, Pass, Ps, Opts); select_passes([{unless,Flag,Pass}|Ps], Opts) -> select_cond(Flag, false, Pass, Ps, Opts); -select_passes([{_,Fun}=P|Ps], Opts) when is_function(Fun) -> - [P|select_passes(Ps, Opts)]; select_passes([{delay,Passes0}|Ps], Opts) when is_list(Passes0) -> %% Delay evaluation of compiler options and which compiler passes to run. %% Since we must know beforehand whether a listing will be produced, we @@ -719,9 +722,6 @@ select_passes([{delay,Passes0}|Ps], Opts) when is_list(Passes0) -> {not_done,Passes} -> [{delay,Passes}|select_passes(Ps, Opts)] end; -select_passes([{_,Test,Fun}=P|Ps], Opts) when is_function(Test), - is_function(Fun) -> - [P|select_passes(Ps, Opts)]; select_passes([], _Opts) -> []; select_passes([List|Ps], Opts) when is_list(List) -> -- 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