File 0961-Add-specs-for-missing-mnesia-functions.patch of Package erlang

From d9d0247a45e3afb4c9cf4420438d9e261b32690e Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 20 Dec 2023 15:50:03 +0100
Subject: [PATCH 1/4] Add specs for missing mnesia functions

---
 lib/mnesia/src/mnesia_frag_hash.erl | 23 ++++++++++++++++++++---
 lib/mnesia/src/mnesia_registry.erl  |  3 ++-
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/lib/mnesia/src/mnesia_frag_hash.erl b/lib/mnesia/src/mnesia_frag_hash.erl
index d658ab2770..52c2eee330 100644
--- a/lib/mnesia/src/mnesia_frag_hash.erl
+++ b/lib/mnesia/src/mnesia_frag_hash.erl
@@ -47,7 +47,10 @@
 	 function}).
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+-spec init_state(Tab, State) -> NewState when
+      Tab :: atom(),
+      State :: term(),
+      NewState :: term().
 init_state(_Tab, State) when State == undefined ->
     #hash_state{n_fragments     = 1,
 		next_n_to_split = 1,
@@ -62,6 +65,10 @@ convert_old_state({hash_state, N, P, L}) ->
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+-spec add_frag(State :: term()) -> {NewState, IterFrags, AdditionalLockFrags} when
+      NewState :: term(),
+      IterFrags :: [integer()],
+      AdditionalLockFrags :: [integer()].
 add_frag(#hash_state{next_n_to_split = SplitN, n_doubles = L, n_fragments = N} = State) ->
     P = SplitN + 1,
     NewN = N + 1,
@@ -81,6 +88,10 @@ add_frag(OldState) ->
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+-spec del_frag(State :: term()) -> {NewState, IterFrags, AdditionalLockFrags} when
+      NewState :: term(),
+      IterFrags :: [integer()],
+      AdditionalLockFrags :: [integer()].
 del_frag(#hash_state{next_n_to_split = SplitN, n_doubles = L, n_fragments = N} = State) ->
     P = SplitN - 1,
     if
@@ -102,7 +113,10 @@ del_frag(OldState) ->
     del_frag(State).
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+-spec key_to_frag_number(State, Key) -> Fragnum when
+      State :: term(),
+      Key :: term(),
+      Fragnum :: integer().
 key_to_frag_number(#hash_state{function = phash, n_fragments = N, n_doubles = L}, Key) ->
     A = erlang:phash(Key, power2(L + 1)),
     if
@@ -124,7 +138,10 @@ key_to_frag_number(OldState, Key) ->
     key_to_frag_number(State, Key).
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+-spec match_spec_to_frag_numbers(State, MatchSpec) -> Fragnums when
+      State :: term(),
+      MatchSpec :: ets:match_spec(),
+      Fragnums :: [integer()].
 match_spec_to_frag_numbers(#hash_state{n_fragments = N} = State, MatchSpec) ->
     case MatchSpec of
 	[{HeadPat, _, _}] when is_tuple(HeadPat), tuple_size(HeadPat) > 2 ->
diff --git a/lib/mnesia/src/mnesia_registry.erl b/lib/mnesia/src/mnesia_registry.erl
index 55ddc3d2fd..d829683bfc 100644
--- a/lib/mnesia/src/mnesia_registry.erl
+++ b/lib/mnesia/src/mnesia_registry.erl
@@ -143,13 +143,14 @@ start_dump(Tab, LinkTo) ->
 start_restore(Tab, LinkTo) ->
     start(restore, Tab, LinkTo).
 
-
+-spec create_table(Tab :: atom()) -> 'ok'.
 %% Optionally creates the Mnesia table Tab with suitable default values.
 %% Returns ok or EXIT's
 create_table(Tab) ->
     Storage = mnesia:table_info(schema, storage_type),
     create_table(Tab, [{Storage, [node()]}]).
 
+-spec create_table(Tab :: atom(), Opt :: [{atom(), term()}]) -> ok.
 create_table(Tab, TabDef) ->
     Attrs = record_info(fields, registry_entry),
     case mnesia:create_table(Tab, [{attributes, Attrs} | TabDef]) of
-- 
2.35.3

openSUSE Build Service is sponsored by