%% -*- Mode: erlang; indent-tabs-mode: nil -*- %% Copyright Ericsson AB 2017. All Rights Reserved. %%% Function (and funs) indentation %%% Not everything in these test are set in stone %%% better indentation rules can be added but by having %%% these tests we can see what changes in new implementations %%% and notice when doing unintentional changes -export([ func1/0, func2/0, a_function_with_a_very_very_long_name/0, when1/2 ]). -compile([nowarn_unused_functions, {inline, [ func2/2, func3/2 ] } ]). func1() -> basic. func2(A1, A2) -> ok. func3( A1, A2 ) -> ok. %% Okeefe style func4(A1 ,A2 ,A3 ) -> ok. func5( A41 ,A42) -> ok. a_function_with_a_very_very_long_name() -> A00 = #record{ field1=1, field2=1 }, A00. when1(W1, W2) when is_number(W1), is_number(W2) -> ok. when2(W1,W2,W3) when W1 > W2, W2 > W3 -> ok. when3(W1,W2,W3) when W1 > W2, W2 > W3 -> ok. when4(W1,W2,W3) when W1 > W2, W2 > W3 -> ok. match1({[H|T], Other}, M1A2) -> ok. match2( { [H|T], Other }, M2A2 ) -> ok. match3({ M3A1, [ H | T ], Other }, M3A2 ) -> ok. match4(<< M4A:8, M4B:16/unsigned-integer, _/binary >>, M4C) -> ok. match5(M5A, #record{ b=M5B, c=M5C } ) -> ok. match6(M6A, #{key6a := a6, key6b := b6 }) -> ok. funs(1) when X -> %% Changed fun to one indention level %% 'when' and several clause forces a depth of '4' Var = spawn(fun(X, _) when X == 2; X > 10 -> hello, case Hello() of true when is_atom(X) -> foo; false -> bar end; (Foo) when is_atom(Foo), is_integer(X) -> X = 6 * 45, Y = true andalso kalle end), Var; funs(2) -> %% check EEP37 named funs Fn1 = fun Factory(N) when N > 0 -> F = Fact(N-1), N * F; Factory(0) -> 1 end, Fn1; funs(3) -> %% check anonymous funs too Fn2 = fun(0) -> 1; (N) -> N end, ok; funs(4) -> X = lists:foldr(fun(M) -> <> end, [], Z), A = <>, A.