Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:25
erlang
1811-erl_types-Optimize-t_contains_opaque-2.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1811-erl_types-Optimize-t_contains_opaque-2.patch of Package erlang
From 15a26bc83153099ed81e5fc770b7ff39660891df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org> Date: Sat, 5 Nov 2022 06:27:18 +0100 Subject: [PATCH 11/12] erl_types: Optimize t_contains_opaque/2 --- lib/dialyzer/src/erl_types.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/dialyzer/src/erl_types.erl b/lib/dialyzer/src/erl_types.erl index e799d3d009..8df38870c1 100644 --- a/lib/dialyzer/src/erl_types.erl +++ b/lib/dialyzer/src/erl_types.erl @@ -472,6 +472,8 @@ t_contains_opaque(?identifier(_Types), _Opaques) -> false; t_contains_opaque(?int_range(_From, _To), _Opaques) -> false; t_contains_opaque(?int_set(_Set), _Opaques) -> false; t_contains_opaque(?integer(_Types), _Opaques) -> false; +t_contains_opaque(?list(Type, ?nil, _), Opaques) -> + t_contains_opaque(Type, Opaques); t_contains_opaque(?list(Type, Tail, _), Opaques) -> t_contains_opaque(Type, Opaques) orelse t_contains_opaque(Tail, Opaques); t_contains_opaque(?map(_, _, _) = Map, Opaques) -> @@ -494,8 +496,9 @@ t_contains_opaque(?var(_Id), _Opaques) -> false. -spec list_contains_opaque([erl_type()], [erl_type()]) -> boolean(). -list_contains_opaque(List, Opaques) -> - lists:any(fun(E) -> t_contains_opaque(E, Opaques) end, List). +list_contains_opaque([H|T], Opaques) -> + t_contains_opaque(H, Opaques) orelse list_contains_opaque(T, Opaques); +list_contains_opaque([], _Opaques) -> false. %% t_find_opaque_mismatch/2 of two types should only be used if their %% t_inf is t_none() due to some opaque type violation. However, -- 2.35.3
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