Skip to content

Commit

Permalink
Merge pull request #35 from walter-weinmann/wwe
Browse files Browse the repository at this point in the history
Fixing dialyzer issues.
  • Loading branch information
walter-weinmann authored Feb 17, 2017
2 parents a40c0ef + ae3a917 commit 51d6399
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 59 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
_build
erl_crash.dump
rebar.lock
rebar3.crashdump
test/tmp
test/*.beam
11 changes: 6 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
install:
- wget https://s3.amazonaws.com/rebar3/rebar3 && chmod +x rebar3
language: erlang
notifications:
email:
- [email protected]
otp_release:
- 19.2
- 19.1
Expand All @@ -16,5 +15,7 @@ otp_release:
- 17.3
- 17.1
- 17.0
after_success:
"./rebar ct"
script:
- ./rebar3 compile
- ./rebar3 eunit
- ./rebar3 ct
21 changes: 2 additions & 19 deletions rebar.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
{ct_cover, true}.
{ct_verbose, true}.

{deps_error_on_conflict, true}.

{dialyzer_plt_location, local}.
{dialyzer_warnings, [error_handling,
overspecs,
Expand All @@ -17,22 +19,3 @@
{skip_deps, true},
verbose
]}.

{profiles, [
{prod, [
{erl_opts, [no_debug_info,
warnings_as_errors]}
]},
{test, [
{erl_opts, [debug_info]}
]}
]}.

{xref_checks, [
deprecated_functions,
deprecated_function_calls,
exports_not_used,
locals_not_used,
undefined_functions,
undefined_function_calls
]}.
8 changes: 2 additions & 6 deletions src/b_trees.app.src
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@
]
},
{description, "B-trees in Erlang"},
{modules,
[
b_trees
]
},
{vsn, "1.4.4"}
{modules, [b_trees]},
{vsn, "1.4.5"}
]
}.
40 changes: 15 additions & 25 deletions src/b_trees.erl
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,13 @@

-export_type([b_tree/0, iter/0]).

-type b_tree() :: {MinimumSubtrees :: pos_integer(), MaximumKeys :: pos_integer(), SizeKeyValues :: non_neg_integer(), sort_function(), state(), subtree()}.
-opaque b_tree() :: {MinimumSubtrees :: pos_integer(), MaximumKeys :: pos_integer(), SizeKeyValues :: non_neg_integer(), sort_function(), state(), subtree()}.

-type delete_function() :: fun((state_target(), 'delete', subtrees_key()) -> 'ok').

-type gb_iter() :: gb_trees:iter().
-type gb_tree() :: gb_trees:tree().

-type insert_function() :: fun((state_target(), 'insert', subtrees()) -> subtrees_key()).

-type iter() :: [{key_values(), subtrees(), state()}].
-opaque iter() :: [{key_values(), subtrees(), state()}].

-type key() :: any().
-type keys() :: [key()].
Expand Down Expand Up @@ -227,9 +224,9 @@

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec copy(b_tree(), b_tree()) -> b_tree()
; (b_tree(), gb_tree()) -> gb_tree()
; (gb_tree(), b_tree()) -> b_tree().
-spec copy(b_tree(), b_tree()) -> b_tree();
(b_tree(), gb_trees:tree()) -> gb_trees:tree();
(gb_trees:tree(), b_tree()) -> b_tree().

% Copy tree to b-tree.
copy(Tree1, {MinimumSubtrees2, _, 0, _, State2, nil} = Tree2) ->
Expand All @@ -249,7 +246,7 @@ copy(Tree1, {MinimumSubtrees2, _, 0, _, State2, nil} = Tree2) ->
copy_binary_tree_to_b_tree(Tree1, Tree2)
end;
% Copy tree to binary tree.
copy(Tree1, {0, nil} = Tree2) ->
copy(Tree1, Tree2) ->
case Tree1 of
{_, _, 0, _, _, nil} ->
Tree2;
Expand All @@ -272,28 +269,26 @@ copy_b_tree_to_b_tree_iterator(none, BTree) ->
copy_b_tree_to_b_tree_iterator({Key, Value, Iterator}, BTree) ->
copy_b_tree_to_b_tree_iterator(next(Iterator), insert(Key, Value, BTree)).

-spec copy_b_tree_to_binary_tree(b_tree(), gb_tree()) -> gb_tree().
-spec copy_b_tree_to_binary_tree(b_tree(), gb_trees:tree()) -> gb_trees:tree().

% Copy b-tree to binary tree.
copy_b_tree_to_binary_tree(BTree, GBTree) ->
copy_b_tree_to_binary_tree_iterator(next(iterator(BTree)), GBTree).

-spec copy_b_tree_to_binary_tree_iterator('none', gb_tree()) -> gb_tree()
; ({key(), value(), iter()}, gb_tree()) -> gb_tree().
-spec copy_b_tree_to_binary_tree_iterator('none' | {key(), value(), iter()}, gb_trees:tree()) -> gb_trees:tree().

copy_b_tree_to_binary_tree_iterator(none, GBTree) ->
GBTree;
copy_b_tree_to_binary_tree_iterator({Key, Value, Iterator}, GBTree) ->
copy_b_tree_to_binary_tree_iterator(next(Iterator), gb_trees:insert(Key, Value, GBTree)).

-spec copy_binary_tree_to_b_tree(gb_tree(), b_tree()) -> b_tree().
-spec copy_binary_tree_to_b_tree(gb_trees:tree(), b_tree()) -> b_tree().

% Copy binary tree to b-tree.
copy_binary_tree_to_b_tree(GBTree, BTree) ->
copy_binary_tree_to_b_tree_iterator(gb_trees:next(gb_trees:iterator(GBTree)), BTree).

-spec copy_binary_tree_to_b_tree_iterator('none', b_tree()) -> b_tree()
; ({key(), value(), gb_iter()}, b_tree()) -> b_tree().
-spec copy_binary_tree_to_b_tree_iterator('none' | {key(), value(), gb_trees:iter()}, b_tree()) -> b_tree().

copy_binary_tree_to_b_tree_iterator(none, BTree) ->
BTree;
Expand Down Expand Up @@ -1955,8 +1950,7 @@ largest_1({_, SubtreeNo, _, Subtrees}, {StateTarget, _, _, LookupFunction} = Sta

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec lookup(key(), b_tree()) -> 'none'
; (key(), b_tree()) -> {'value', value()}.
-spec lookup(key(), b_tree()) -> 'none' | {'value', value()}.

lookup(_, {_, _, 0, _, _, nil}) ->
none;
Expand Down Expand Up @@ -2013,8 +2007,7 @@ map_subtrees(Function, State, [Tree | Tail], TreesMapped) ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec next(iter()) -> 'none'
; (iter()) -> {key(), value(), iter()}.
-spec next(iter()) -> 'none' | {key(), value(), iter()}.

% One level up.
next([{[], _, _}, {[], _, _} = Iterator | TailIterator]) ->
Expand Down Expand Up @@ -2116,8 +2109,7 @@ take(Key, BTree) ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec take_any(key(), b_tree()) -> error
; (key(), b_tree()) -> {value(), b_tree()}.
-spec take_any(key(), b_tree()) -> 'error' | {value(), b_tree()}.

take_any(Key, BTree) ->
case is_defined(Key, BTree) of
Expand Down Expand Up @@ -2350,8 +2342,7 @@ values_1([{_, Value} | TailKeyValues], [{_, _, KeyValues, SubtreesKey} | TailSub
%% Helper functions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec binary_search(key(), key_values(), pos_integer(), pos_integer(), pos_integer(), sort_function()) -> {none, pos_integer()}
; (key(), key_values(), pos_integer(), pos_integer(), pos_integer(), sort_function()) -> {any(), pos_integer()}.
-spec binary_search(key(), key_values(), pos_integer(), pos_integer(), pos_integer(), sort_function()) -> {'none', pos_integer()} | {any(), pos_integer()}.

binary_search(Key, KeyValues, KeyNo, Lower, Upper, SortFunction) when Lower > Upper ->
TreeNo = case Lower > KeyNo of
Expand Down Expand Up @@ -2388,8 +2379,7 @@ binary_search(Key, KeyValues, KeyNo, Lower, Upper, SortFunction) ->
%% equality, and also allows us to skip the test completely in the
%% remaining case.

-spec lookup_1(key(), subtree(), sort_function(), state()) -> 'none'
; (key(), subtree(), sort_function(), state()) -> {'value', value()}.
-spec lookup_1(key(), subtree(), sort_function(), state()) -> 'none' | {'value', value()}.

% Leaf node.
lookup_1(Key, {KeyNo, 0, KeyValues, []}, SortFunction, _) ->
Expand Down
8 changes: 4 additions & 4 deletions src/b_trees_generator.erl
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ generate_keys_till(Number, Width) when Number >= 0 ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec take_any_b_tree_from(pos_integer(), pos_integer(), pos_integer()) -> b_trees:b_tree().
-spec take_any_b_tree_from(pos_integer(), pos_integer(), pos_integer()) -> {any(), b_trees:b_tree()}.

take_any_b_tree_from(Order, Number, Width) when Order > 3, Number > 0 ->
BTree = generate_b_tree_from_number(Order, Number, Width),
Expand All @@ -480,7 +480,7 @@ take_any_b_tree_from(Order, Number, Width) when Order > 3, Number > 0 ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec take_any_gb_tree_from(pos_integer(), pos_integer()) -> gb_trees:tree().
-spec take_any_gb_tree_from(pos_integer(), pos_integer()) -> {any(), gb_trees:tree()}.

take_any_gb_tree_from(Number, Width) when Number > 0 ->
GBTree = generate_gb_tree_from_number(Number, Width),
Expand All @@ -489,7 +489,7 @@ take_any_gb_tree_from(Number, Width) when Number > 0 ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec take_b_tree_from(pos_integer(), pos_integer(), pos_integer()) -> b_trees:b_tree().
-spec take_b_tree_from(pos_integer(), pos_integer(), pos_integer()) -> {any(), b_trees:b_tree()}.

take_b_tree_from(Order, Number, Width) when Order > 3, Number > 0 ->
BTree = generate_b_tree_from_number(Order, Number, Width),
Expand All @@ -498,7 +498,7 @@ take_b_tree_from(Order, Number, Width) when Order > 3, Number > 0 ->

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-spec take_gb_tree_from(pos_integer(), pos_integer()) -> gb_trees:tree().
-spec take_gb_tree_from(pos_integer(), pos_integer()) -> {any(), gb_trees:tree()}.

take_gb_tree_from(Number, Width) when Number > 0 ->
GBTree = generate_gb_tree_from_number(Number, Width),
Expand Down
File renamed without changes.

0 comments on commit 51d6399

Please sign in to comment.