File 2071-Optimize-erl_lint-is_guard_test-2-3.patch of Package erlang
From ad64b73a945ff3e663233620b9873189f0cd6aa9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@dashbit.co>
Date: Tue, 7 Dec 2021 13:41:35 +0100
Subject: [PATCH] Optimize erl_lint:is_guard_test/2-3
Only compute erl_lint:start() if there are records.
---
lib/stdlib/src/erl_lint.erl | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl
index ad946d8777..f91938ee18 100644
--- a/lib/stdlib/src/erl_lint.erl
+++ b/lib/stdlib/src/erl_lint.erl
@@ -2261,12 +2261,16 @@ is_guard_test(Expression, Forms) ->
is_guard_test(Expression, Forms, IsOverridden) ->
RecordAttributes = [A || A = {attribute, _, record, _D} <- Forms],
+ is_guard_test1(set_file(Expression, "nofile"), RecordAttributes, IsOverridden).
+
+is_guard_test1(NoFileExpression, [], IsOverridden) ->
+ is_guard_test2(NoFileExpression, {maps:new(),IsOverridden});
+is_guard_test1(NoFileExpression, RecordAttributes, IsOverridden) ->
St0 = foldl(fun(Attr0, St1) ->
Attr = set_file(Attr0, "none"),
attribute_state(Attr, St1)
end, start(), RecordAttributes),
- is_guard_test2(set_file(Expression, "nofile"),
- {St0#lint.records,IsOverridden}).
+ is_guard_test2(NoFileExpression, {St0#lint.records,IsOverridden}).
%% is_guard_test2(Expression, RecordDefs :: dict:dict()) -> boolean().
is_guard_test2({call,Anno,{atom,Ar,record},[E,A]}, Info) ->
--
2.31.1