mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-16 07:58:04 +00:00
Upgrade to version R10B-5.
This commit is contained in:
parent
47c1495052
commit
edd835dd84
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=135064
@ -6,7 +6,7 @@
|
||||
#
|
||||
|
||||
PORTNAME= erlang
|
||||
PORTVERSION= r10b4
|
||||
PORTVERSION= r10b5
|
||||
PORTEPOCH= 1
|
||||
CATEGORIES= lang parallel
|
||||
MASTER_SITES= http://www.erlang.org/download/ \
|
||||
@ -14,7 +14,7 @@ MASTER_SITES= http://www.erlang.org/download/ \
|
||||
http://www.erlang.org/download/ \
|
||||
http://erlang.stacken.kth.se/download/ \
|
||||
http://www.csd.uu.se/ftp/mirror/erlang/download/
|
||||
DISTNAME= otp_src_R10B-4
|
||||
DISTNAME= otp_src_R10B-5
|
||||
|
||||
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${ERLANG_MAN} ${ERLANG_DOCS}
|
||||
DIST_SUBDIR= erlang
|
||||
@ -31,9 +31,9 @@ RUN_DEPENDS= wish8.4:${PORTSDIR}/x11-toolkits/tk84
|
||||
JAVABINDIR?= ${LOCALBASE}/jdk1.4.2/bin
|
||||
JAVAPORT?= ${JAVABINDIR}/javac:${PORTSDIR}/java/jdk14
|
||||
|
||||
ERLANG_MAN= otp_doc_man_R10B-4.tar.gz
|
||||
ERLANG_MAN= otp_doc_man_R10B-5.tar.gz
|
||||
.if !defined(NOPORTDOCS)
|
||||
ERLANG_DOCS= otp_doc_html_R10B-4.tar.gz
|
||||
ERLANG_DOCS= otp_doc_html_R10B-5.tar.gz
|
||||
.endif
|
||||
|
||||
USE_GMAKE= yes
|
||||
|
@ -1,9 +1,9 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ERTS_VSN= 5.4.5
|
||||
ERTS_VSN= 5.4.6
|
||||
OTP_LIBS= appmon-2.1.4 \
|
||||
asn1-1.4.4.5 \
|
||||
compiler-4.3.5 \
|
||||
asn1-1.4.4.6 \
|
||||
compiler-4.3.7 \
|
||||
cosEvent-2.1 \
|
||||
cosEventDomain-1.1 \
|
||||
cosFileTransfer-1.1.2 \
|
||||
@ -12,35 +12,35 @@ OTP_LIBS= appmon-2.1.4 \
|
||||
cosTime-1.1 \
|
||||
cosTransactions-1.2 \
|
||||
crypto-1.2.3 \
|
||||
debugger-2.3.2 \
|
||||
debugger-2.3.3 \
|
||||
edoc-0.6.1 \
|
||||
erl_interface-3.5.2 \
|
||||
erl_interface-3.5.3 \
|
||||
et-1.0 \
|
||||
gs-1.5.4 \
|
||||
hipe-3.4.0 \
|
||||
hipe-3.5 \
|
||||
ic-4.2.9 \
|
||||
inets-4.3.1 \
|
||||
inets-4.4 \
|
||||
jinterface-1.3 \
|
||||
kernel-2.10.6 \
|
||||
kernel-2.10.7 \
|
||||
megaco-3.0.1 \
|
||||
mnemosyne-1.2.5 \
|
||||
mnesia-4.2.1 \
|
||||
mnesia-4.2.2 \
|
||||
mnesia_session-1.1.5 \
|
||||
observer-0.9.6.1 \
|
||||
odbc-2.0.3 \
|
||||
orber-3.5.3 \
|
||||
odbc-2.0.4 \
|
||||
orber-3.5.4 \
|
||||
os_mon-1.7.3 \
|
||||
otp_mibs-1.0.4 \
|
||||
parsetools-1.3.2 \
|
||||
pman-2.5.2 \
|
||||
runtime_tools-1.5.1 \
|
||||
runtime_tools-1.5.1.1 \
|
||||
sasl-2.0.1 \
|
||||
snmp-4.1.2 \
|
||||
snmp-4.1.4 \
|
||||
ssl-3.0.5 \
|
||||
stdlib-1.13.5 \
|
||||
stdlib-1.13.7 \
|
||||
syntax_tools-1.4.1 \
|
||||
toolbar-1.2.1 \
|
||||
tools-2.4.2 \
|
||||
tools-2.4.3 \
|
||||
tv-2.1.2 \
|
||||
webtool-0.8.2 \
|
||||
xmerl-1.0
|
||||
xmerl-1.0.2
|
||||
|
@ -1,6 +1,6 @@
|
||||
MD5 (erlang/otp_src_R10B-4.tar.gz) = 253700bdcd966909f140ea0bfbeb9b7c
|
||||
SIZE (erlang/otp_src_R10B-4.tar.gz) = 9988051
|
||||
MD5 (erlang/otp_doc_man_R10B-4.tar.gz) = 1d5f850706c0d321e712bc7971adedc5
|
||||
SIZE (erlang/otp_doc_man_R10B-4.tar.gz) = 594849
|
||||
MD5 (erlang/otp_doc_html_R10B-4.tar.gz) = 57fffd9113d88cc1a16c7890c3552f9e
|
||||
SIZE (erlang/otp_doc_html_R10B-4.tar.gz) = 4582699
|
||||
MD5 (erlang/otp_src_R10B-5.tar.gz) = fa6c4ba8291e1d11ae412e4d6f0fa392
|
||||
SIZE (erlang/otp_src_R10B-5.tar.gz) = 9996505
|
||||
MD5 (erlang/otp_doc_man_R10B-5.tar.gz) = a64d7797ce0f98363f8bd59608a35a58
|
||||
SIZE (erlang/otp_doc_man_R10B-5.tar.gz) = 597252
|
||||
MD5 (erlang/otp_doc_html_R10B-5.tar.gz) = 7615ad16c1f26e4cd8891d968d1168fa
|
||||
SIZE (erlang/otp_doc_html_R10B-5.tar.gz) = 4591317
|
||||
|
@ -1,117 +0,0 @@
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
--- lib/compiler/src/beam_validator.erl.orig
|
||||
+++ lib/compiler/src/beam_validator.erl
|
||||
@@ -415,7 +415,7 @@
|
||||
TupleType0 = get_term_type(Tuple, Vst0),
|
||||
PosType = get_term_type(Pos, Vst0),
|
||||
Vst1 = branch_state(Fail, Vst0),
|
||||
- TupleType = upgrade_type({tuple,[get_tuple_size(PosType)]}, TupleType0),
|
||||
+ TupleType = upgrade_tuple_type({tuple,[get_tuple_size(PosType)]}, TupleType0),
|
||||
Vst = set_type(TupleType, Tuple, Vst1),
|
||||
set_type_reg(term, Dst, Vst);
|
||||
valfun_4({arithbif,Op,F,Src,Dst}, Vst) ->
|
||||
@@ -529,8 +529,9 @@
|
||||
assert_term(Float, Vst),
|
||||
set_type({float,[]}, Float, branch_state(Lbl, Vst));
|
||||
valfun_4({test,is_tuple,{f,Lbl},[Tuple]}, Vst) ->
|
||||
- assert_term(Tuple, Vst),
|
||||
- set_type({tuple,[0]}, Tuple, branch_state(Lbl, Vst));
|
||||
+ Type0 = get_term_type(Tuple, Vst),
|
||||
+ Type = upgrade_tuple_type({tuple,[0]}, Type0),
|
||||
+ set_type(Type, Tuple, branch_state(Lbl, Vst));
|
||||
valfun_4({test,is_nonempty_list,{f,Lbl},[Cons]}, Vst) ->
|
||||
assert_term(Cons, Vst),
|
||||
set_type(cons, Cons, branch_state(Lbl, Vst));
|
||||
@@ -843,54 +844,25 @@
|
||||
assert_type(Needed, Actual) ->
|
||||
error({bad_type,{needed,Needed},{actual,Actual}}).
|
||||
|
||||
-%% upgrade_type/2 is used when linear code finds out more and
|
||||
-%% more information about a type, so the type gets "narrower"
|
||||
-%% or perhaps inconsistent. In the case of inconsistency
|
||||
-%% we mostly widen the type to 'term' to make subsequent
|
||||
-%% code fail if it assumes anything about the type.
|
||||
|
||||
-upgrade_type(Same, Same) -> Same;
|
||||
-upgrade_type(term, OldT) -> OldT;
|
||||
-upgrade_type(NewT, term) -> NewT;
|
||||
-upgrade_type({Type,New}=NewT, {Type,Old}=OldT)
|
||||
- when Type == atom; Type == integer; Type == float ->
|
||||
- if New =:= Old -> OldT;
|
||||
- New =:= [] -> OldT;
|
||||
- Old =:= [] -> NewT;
|
||||
- true -> term
|
||||
- end;
|
||||
-upgrade_type({Type,_}=NewT, number)
|
||||
- when Type == integer; Type == float ->
|
||||
- NewT;
|
||||
-upgrade_type(number, {Type,_}=OldT)
|
||||
- when Type == integer; Type == float ->
|
||||
- OldT;
|
||||
-upgrade_type(bool, {atom,A}) ->
|
||||
- upgrade_bool(A);
|
||||
-upgrade_type({atom,A}, bool) ->
|
||||
- upgrade_bool(A);
|
||||
-upgrade_type({tuple,[Sz]}, {tuple,[OldSz]})
|
||||
- when is_integer(Sz) ->
|
||||
- {tuple,[max(Sz, OldSz)]};
|
||||
-upgrade_type({tuple,Sz}=T, {tuple,[_]})
|
||||
- when is_integer(Sz) ->
|
||||
- %% This also takes care of the user error when a tuple element
|
||||
- %% is accesed outside the known exact tuple size; there is
|
||||
- %% no more type information, just a runtime error which is not
|
||||
- %% our problem.
|
||||
- T;
|
||||
-upgrade_type({tuple,[Sz]}, {tuple,_}=T)
|
||||
- when is_integer(Sz) ->
|
||||
- %% Same as the previous clause but mirrored.
|
||||
- T;
|
||||
-upgrade_type(_A, _B) ->
|
||||
- %%io:format("upgrade_type: ~p ~p\n", [_A,_B]),
|
||||
- term.
|
||||
+%% upgrade_tuple_type(NewTupleType, OldType) -> TupleType.
|
||||
+%% upgrade_tuple_type/2 is used when linear code finds out more and
|
||||
+%% more information about a tuple type, so that the type gets more
|
||||
+%% specialized. If OldType is not a tuple type, the type information
|
||||
+%% is inconsistent, and we know that some instructions will never
|
||||
+%% be executed at run-time.
|
||||
|
||||
-upgrade_bool([]) -> bool;
|
||||
-upgrade_bool(true) -> {atom,true};
|
||||
-upgrade_bool(false) -> {atom,false};
|
||||
-upgrade_bool(_) -> term.
|
||||
+upgrade_tuple_type({tuple,[Sz]}, {tuple,[OldSz]}=T) when Sz < OldSz ->
|
||||
+ %% The old type has a higher value for the least tuple size.
|
||||
+ T;
|
||||
+upgrade_tuple_type({tuple,_}=T, _) ->
|
||||
+ %% The new type information is exact or has a higher value for
|
||||
+ %% the least tuple size.
|
||||
+ %% Note that inconsistencies are also handled in this
|
||||
+ %% clause, e.g. if the old type was an integer or a tuple accessed
|
||||
+ %% outside its size; inconsistences will generally cause an exception
|
||||
+ %% at run-time but are safe from our point of view.
|
||||
+ T.
|
||||
|
||||
get_tuple_size({integer,[]}) -> 0;
|
||||
get_tuple_size({integer,Sz}) -> Sz;
|
||||
@@ -1172,7 +1144,7 @@
|
||||
end,
|
||||
case get_term_type({x,0}, Vst) of
|
||||
{integer,[]} -> TupleType;
|
||||
- {integer,I} -> upgrade_type({tuple,[I]}, TupleType);
|
||||
+ {integer,I} -> upgrade_tuple_type({tuple,[I]}, TupleType);
|
||||
_ -> TupleType
|
||||
end;
|
||||
return_type_1(erlang, F, A, _) ->
|
||||
@@ -1214,9 +1186,6 @@
|
||||
|
||||
min(A, B) when is_integer(A), is_integer(B), A < B -> A;
|
||||
min(A, B) when is_integer(A), is_integer(B) -> B.
|
||||
-
|
||||
-max(A, B) when is_integer(A), is_integer(B), A > B -> A;
|
||||
-max(A, B) when is_integer(A), is_integer(B) -> B.
|
||||
|
||||
gb_trees_from_list(L) -> gb_trees:from_orddict(orddict:from_list(L)).
|
||||
|
@ -6,7 +6,7 @@
|
||||
#
|
||||
|
||||
PORTNAME= erlang
|
||||
PORTVERSION= r10b4
|
||||
PORTVERSION= r10b5
|
||||
PORTEPOCH= 1
|
||||
CATEGORIES= lang parallel
|
||||
MASTER_SITES= http://www.erlang.org/download/ \
|
||||
@ -14,7 +14,7 @@ MASTER_SITES= http://www.erlang.org/download/ \
|
||||
http://www.erlang.org/download/ \
|
||||
http://erlang.stacken.kth.se/download/ \
|
||||
http://www.csd.uu.se/ftp/mirror/erlang/download/
|
||||
DISTNAME= otp_src_R10B-4
|
||||
DISTNAME= otp_src_R10B-5
|
||||
|
||||
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${ERLANG_MAN} ${ERLANG_DOCS}
|
||||
DIST_SUBDIR= erlang
|
||||
@ -31,9 +31,9 @@ RUN_DEPENDS= wish8.4:${PORTSDIR}/x11-toolkits/tk84
|
||||
JAVABINDIR?= ${LOCALBASE}/jdk1.4.2/bin
|
||||
JAVAPORT?= ${JAVABINDIR}/javac:${PORTSDIR}/java/jdk14
|
||||
|
||||
ERLANG_MAN= otp_doc_man_R10B-4.tar.gz
|
||||
ERLANG_MAN= otp_doc_man_R10B-5.tar.gz
|
||||
.if !defined(NOPORTDOCS)
|
||||
ERLANG_DOCS= otp_doc_html_R10B-4.tar.gz
|
||||
ERLANG_DOCS= otp_doc_html_R10B-5.tar.gz
|
||||
.endif
|
||||
|
||||
USE_GMAKE= yes
|
||||
|
@ -1,9 +1,9 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ERTS_VSN= 5.4.5
|
||||
ERTS_VSN= 5.4.6
|
||||
OTP_LIBS= appmon-2.1.4 \
|
||||
asn1-1.4.4.5 \
|
||||
compiler-4.3.5 \
|
||||
asn1-1.4.4.6 \
|
||||
compiler-4.3.7 \
|
||||
cosEvent-2.1 \
|
||||
cosEventDomain-1.1 \
|
||||
cosFileTransfer-1.1.2 \
|
||||
@ -12,35 +12,35 @@ OTP_LIBS= appmon-2.1.4 \
|
||||
cosTime-1.1 \
|
||||
cosTransactions-1.2 \
|
||||
crypto-1.2.3 \
|
||||
debugger-2.3.2 \
|
||||
debugger-2.3.3 \
|
||||
edoc-0.6.1 \
|
||||
erl_interface-3.5.2 \
|
||||
erl_interface-3.5.3 \
|
||||
et-1.0 \
|
||||
gs-1.5.4 \
|
||||
hipe-3.4.0 \
|
||||
hipe-3.5 \
|
||||
ic-4.2.9 \
|
||||
inets-4.3.1 \
|
||||
inets-4.4 \
|
||||
jinterface-1.3 \
|
||||
kernel-2.10.6 \
|
||||
kernel-2.10.7 \
|
||||
megaco-3.0.1 \
|
||||
mnemosyne-1.2.5 \
|
||||
mnesia-4.2.1 \
|
||||
mnesia-4.2.2 \
|
||||
mnesia_session-1.1.5 \
|
||||
observer-0.9.6.1 \
|
||||
odbc-2.0.3 \
|
||||
orber-3.5.3 \
|
||||
odbc-2.0.4 \
|
||||
orber-3.5.4 \
|
||||
os_mon-1.7.3 \
|
||||
otp_mibs-1.0.4 \
|
||||
parsetools-1.3.2 \
|
||||
pman-2.5.2 \
|
||||
runtime_tools-1.5.1 \
|
||||
runtime_tools-1.5.1.1 \
|
||||
sasl-2.0.1 \
|
||||
snmp-4.1.2 \
|
||||
snmp-4.1.4 \
|
||||
ssl-3.0.5 \
|
||||
stdlib-1.13.5 \
|
||||
stdlib-1.13.7 \
|
||||
syntax_tools-1.4.1 \
|
||||
toolbar-1.2.1 \
|
||||
tools-2.4.2 \
|
||||
tools-2.4.3 \
|
||||
tv-2.1.2 \
|
||||
webtool-0.8.2 \
|
||||
xmerl-1.0
|
||||
xmerl-1.0.2
|
||||
|
@ -1,6 +1,6 @@
|
||||
MD5 (erlang/otp_src_R10B-4.tar.gz) = 253700bdcd966909f140ea0bfbeb9b7c
|
||||
SIZE (erlang/otp_src_R10B-4.tar.gz) = 9988051
|
||||
MD5 (erlang/otp_doc_man_R10B-4.tar.gz) = 1d5f850706c0d321e712bc7971adedc5
|
||||
SIZE (erlang/otp_doc_man_R10B-4.tar.gz) = 594849
|
||||
MD5 (erlang/otp_doc_html_R10B-4.tar.gz) = 57fffd9113d88cc1a16c7890c3552f9e
|
||||
SIZE (erlang/otp_doc_html_R10B-4.tar.gz) = 4582699
|
||||
MD5 (erlang/otp_src_R10B-5.tar.gz) = fa6c4ba8291e1d11ae412e4d6f0fa392
|
||||
SIZE (erlang/otp_src_R10B-5.tar.gz) = 9996505
|
||||
MD5 (erlang/otp_doc_man_R10B-5.tar.gz) = a64d7797ce0f98363f8bd59608a35a58
|
||||
SIZE (erlang/otp_doc_man_R10B-5.tar.gz) = 597252
|
||||
MD5 (erlang/otp_doc_html_R10B-5.tar.gz) = 7615ad16c1f26e4cd8891d968d1168fa
|
||||
SIZE (erlang/otp_doc_html_R10B-5.tar.gz) = 4591317
|
||||
|
@ -1,117 +0,0 @@
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
--- lib/compiler/src/beam_validator.erl.orig
|
||||
+++ lib/compiler/src/beam_validator.erl
|
||||
@@ -415,7 +415,7 @@
|
||||
TupleType0 = get_term_type(Tuple, Vst0),
|
||||
PosType = get_term_type(Pos, Vst0),
|
||||
Vst1 = branch_state(Fail, Vst0),
|
||||
- TupleType = upgrade_type({tuple,[get_tuple_size(PosType)]}, TupleType0),
|
||||
+ TupleType = upgrade_tuple_type({tuple,[get_tuple_size(PosType)]}, TupleType0),
|
||||
Vst = set_type(TupleType, Tuple, Vst1),
|
||||
set_type_reg(term, Dst, Vst);
|
||||
valfun_4({arithbif,Op,F,Src,Dst}, Vst) ->
|
||||
@@ -529,8 +529,9 @@
|
||||
assert_term(Float, Vst),
|
||||
set_type({float,[]}, Float, branch_state(Lbl, Vst));
|
||||
valfun_4({test,is_tuple,{f,Lbl},[Tuple]}, Vst) ->
|
||||
- assert_term(Tuple, Vst),
|
||||
- set_type({tuple,[0]}, Tuple, branch_state(Lbl, Vst));
|
||||
+ Type0 = get_term_type(Tuple, Vst),
|
||||
+ Type = upgrade_tuple_type({tuple,[0]}, Type0),
|
||||
+ set_type(Type, Tuple, branch_state(Lbl, Vst));
|
||||
valfun_4({test,is_nonempty_list,{f,Lbl},[Cons]}, Vst) ->
|
||||
assert_term(Cons, Vst),
|
||||
set_type(cons, Cons, branch_state(Lbl, Vst));
|
||||
@@ -843,54 +844,25 @@
|
||||
assert_type(Needed, Actual) ->
|
||||
error({bad_type,{needed,Needed},{actual,Actual}}).
|
||||
|
||||
-%% upgrade_type/2 is used when linear code finds out more and
|
||||
-%% more information about a type, so the type gets "narrower"
|
||||
-%% or perhaps inconsistent. In the case of inconsistency
|
||||
-%% we mostly widen the type to 'term' to make subsequent
|
||||
-%% code fail if it assumes anything about the type.
|
||||
|
||||
-upgrade_type(Same, Same) -> Same;
|
||||
-upgrade_type(term, OldT) -> OldT;
|
||||
-upgrade_type(NewT, term) -> NewT;
|
||||
-upgrade_type({Type,New}=NewT, {Type,Old}=OldT)
|
||||
- when Type == atom; Type == integer; Type == float ->
|
||||
- if New =:= Old -> OldT;
|
||||
- New =:= [] -> OldT;
|
||||
- Old =:= [] -> NewT;
|
||||
- true -> term
|
||||
- end;
|
||||
-upgrade_type({Type,_}=NewT, number)
|
||||
- when Type == integer; Type == float ->
|
||||
- NewT;
|
||||
-upgrade_type(number, {Type,_}=OldT)
|
||||
- when Type == integer; Type == float ->
|
||||
- OldT;
|
||||
-upgrade_type(bool, {atom,A}) ->
|
||||
- upgrade_bool(A);
|
||||
-upgrade_type({atom,A}, bool) ->
|
||||
- upgrade_bool(A);
|
||||
-upgrade_type({tuple,[Sz]}, {tuple,[OldSz]})
|
||||
- when is_integer(Sz) ->
|
||||
- {tuple,[max(Sz, OldSz)]};
|
||||
-upgrade_type({tuple,Sz}=T, {tuple,[_]})
|
||||
- when is_integer(Sz) ->
|
||||
- %% This also takes care of the user error when a tuple element
|
||||
- %% is accesed outside the known exact tuple size; there is
|
||||
- %% no more type information, just a runtime error which is not
|
||||
- %% our problem.
|
||||
- T;
|
||||
-upgrade_type({tuple,[Sz]}, {tuple,_}=T)
|
||||
- when is_integer(Sz) ->
|
||||
- %% Same as the previous clause but mirrored.
|
||||
- T;
|
||||
-upgrade_type(_A, _B) ->
|
||||
- %%io:format("upgrade_type: ~p ~p\n", [_A,_B]),
|
||||
- term.
|
||||
+%% upgrade_tuple_type(NewTupleType, OldType) -> TupleType.
|
||||
+%% upgrade_tuple_type/2 is used when linear code finds out more and
|
||||
+%% more information about a tuple type, so that the type gets more
|
||||
+%% specialized. If OldType is not a tuple type, the type information
|
||||
+%% is inconsistent, and we know that some instructions will never
|
||||
+%% be executed at run-time.
|
||||
|
||||
-upgrade_bool([]) -> bool;
|
||||
-upgrade_bool(true) -> {atom,true};
|
||||
-upgrade_bool(false) -> {atom,false};
|
||||
-upgrade_bool(_) -> term.
|
||||
+upgrade_tuple_type({tuple,[Sz]}, {tuple,[OldSz]}=T) when Sz < OldSz ->
|
||||
+ %% The old type has a higher value for the least tuple size.
|
||||
+ T;
|
||||
+upgrade_tuple_type({tuple,_}=T, _) ->
|
||||
+ %% The new type information is exact or has a higher value for
|
||||
+ %% the least tuple size.
|
||||
+ %% Note that inconsistencies are also handled in this
|
||||
+ %% clause, e.g. if the old type was an integer or a tuple accessed
|
||||
+ %% outside its size; inconsistences will generally cause an exception
|
||||
+ %% at run-time but are safe from our point of view.
|
||||
+ T.
|
||||
|
||||
get_tuple_size({integer,[]}) -> 0;
|
||||
get_tuple_size({integer,Sz}) -> Sz;
|
||||
@@ -1172,7 +1144,7 @@
|
||||
end,
|
||||
case get_term_type({x,0}, Vst) of
|
||||
{integer,[]} -> TupleType;
|
||||
- {integer,I} -> upgrade_type({tuple,[I]}, TupleType);
|
||||
+ {integer,I} -> upgrade_tuple_type({tuple,[I]}, TupleType);
|
||||
_ -> TupleType
|
||||
end;
|
||||
return_type_1(erlang, F, A, _) ->
|
||||
@@ -1214,9 +1186,6 @@
|
||||
|
||||
min(A, B) when is_integer(A), is_integer(B), A < B -> A;
|
||||
min(A, B) when is_integer(A), is_integer(B) -> B.
|
||||
-
|
||||
-max(A, B) when is_integer(A), is_integer(B), A > B -> A;
|
||||
-max(A, B) when is_integer(A), is_integer(B) -> B.
|
||||
|
||||
gb_trees_from_list(L) -> gb_trees:from_orddict(orddict:from_list(L)).
|
||||
|
Loading…
Reference in New Issue
Block a user