aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2019-05-07 08:25:56 +0200
committerHans Bolinder <[email protected]>2019-05-07 08:25:56 +0200
commit1a2259e01e8f8e000a1d8f93a9446c996c148325 (patch)
tree57c71e5fb661d26074b5faf0902fc9625323586e /lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl
parentfb9cd9534b94fe8c24bc5412205dd97577894b59 (diff)
parentc2cd09c3d6807d2e93d117d9c6b47a706a50c763 (diff)
downloadotp-1a2259e01e8f8e000a1d8f93a9446c996c148325.tar.gz
otp-1a2259e01e8f8e000a1d8f93a9446c996c148325.tar.bz2
otp-1a2259e01e8f8e000a1d8f93a9446c996c148325.zip
Merge branch 'hasse/dialyzer/prettier_warnings/OTP-15135'
* hasse/dialyzer/prettier_warnings/OTP-15135: dialyzer: Remove quotes around operators dialyzer: Add test cases with indentation dialyzer: Add an --no_indentation option dialyzer: Add parentheses around annotated union elements dialyzer: Fix dialyzer_dataflow:format_args_1()
Diffstat (limited to 'lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl')
-rw-r--r--lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl b/lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl
new file mode 100644
index 0000000000..caa44f6c91
--- /dev/null
+++ b/lib/dialyzer/test/indent2_SUITE_data/src/iodata.erl
@@ -0,0 +1,41 @@
+-module(iodata).
+
+%% A small part of beam_asm.
+
+-export([encode/2]).
+
+-spec encode(non_neg_integer(), integer()) -> iodata(). % extra range binary()
+
+encode(Tag, N) when Tag >= 0, N < 0 ->
+ encode1(Tag, negative_to_bytes(N));
+encode(Tag, N) when Tag >= 0, N < 16 ->
+ (N bsl 4) bor Tag; % not in the specification
+encode(Tag, N) when Tag >= 0, N < 16#800 ->
+ [((N bsr 3) band 2#11100000) bor Tag bor 2#00001000, N band 16#ff];
+encode(Tag, N) when Tag >= 0 ->
+ encode1(Tag, to_bytes(N)).
+
+encode1(Tag, Bytes) ->
+ case iolist_size(Bytes) of
+ Num when 2 =< Num, Num =< 8 ->
+ [((Num-2) bsl 5) bor 2#00011000 bor Tag| Bytes];
+ Num when 8 < Num ->
+ [2#11111000 bor Tag, encode(0, Num-9)| Bytes]
+ end.
+
+to_bytes(N) ->
+ Bin = binary:encode_unsigned(N),
+ case Bin of
+ <<0:1,_/bits>> -> Bin;
+ <<1:1,_/bits>> -> [0,Bin]
+ end.
+
+negative_to_bytes(N) when N >= -16#8000 ->
+ <<N:16>>;
+negative_to_bytes(N) ->
+ Bytes = byte_size(binary:encode_unsigned(-N)),
+ Bin = <<N:Bytes/unit:8>>,
+ case Bin of
+ <<0:1,_/bits>> -> [16#ff,Bin];
+ <<1:1,_/bits>> -> Bin
+ end.