Age | Commit message (Collapse) | Author |
|
'cond' expressions were an experimental addition to the Erlang language
that never matured to the point that it could be incorporated to it.
This pull request takes out the (incomplete anyway) handling of 'cond'
expressions from the syntax_tools application, so as to simplify its
code base.
|
|
* maint:
syntax_tools: Fix pretty-printing of type funs
|
|
See also ERL-815.
|
|
* maint:
erts: Add comment about [] and nil() to The Abstract Format
syntax_tools: Correct erl_syntax:revert/1
|
|
* hasse/syntax_tools/fix_revert/OTP-15294:
erts: Add comment about [] and nil() to The Abstract Format
syntax_tools: Correct erl_syntax:revert/1
|
|
* maint:
syntax_tools: Correct unfolding of the stacktrace variable
|
|
revert/1 did not handle the types tuple() and map() correctly.
|
|
The bug was introduced in 9ab233.
See also https://bugs.erlang.org/browse/ERL-719.
|
|
|
|
I did not find any legitimate use of "can not", however skipped
changing e.g RFCs archived in the source tree.
|
|
|
|
Add support of non-whole-byte binaries to `abtract/1`, `concrete/1` and
`is_literal/1`. (They are literals in the beam file)
|
|
|
|
|
|
A quick fix to make the test suite work with the updated erl_eval.
[I think that if "A:B:_" is allowed, it should have a representation
in the abstract format, but that's another story. The pretty printer
should not modify the source code, just print it nicely, IMHO. (But
removing parentheses is OK)]
|
|
|
|
* maint:
erts, stdlib: Fix xmllint warning
Update runtime deps to depend on new stdlib functionality
|
|
~tw and new string functions are new since OTP-20 (stdlib-3.4)
|
|
* siri/string-new-api: (28 commits)
hipe (test): Do not use deprecated functions in string(3)
dialyzer (test): Do not use deprecated functions in string(3)
eunit (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
mnesia (test): Do not use deprecated functions in string(3)
Deprecate old string functions
observer: Do not use deprecated functions in string(3)
common_test: Do not use deprecated functions in string(3)
eldap: Do not use deprecated functions in string(3)
et: Do not use deprecated functions in string(3)
os_mon: Do not use deprecated functions in string(3)
debugger: Do not use deprecated functions in string(3)
runtime_tools: Do not use deprecated functions in string(3)
asn1: Do not use deprecated functions in string(3)
compiler: Do not use deprecated functions in string(3)
sasl: Do not use deprecated functions in string(3)
reltool: Do not use deprecated functions in string(3)
kernel: Do not use deprecated functions in string(3)
hipe: Do not use deprecated functions in string(3)
...
Conflicts:
lib/eunit/src/eunit_lib.erl
lib/observer/src/crashdump_viewer.erl
lib/reltool/src/reltool_target.erl
|
|
* lukas/erts/non-smp-removal-cleanup/OTP-14518:
Make estone work with older releases
erts: Allow read in ttsl driver to return EAGAIN
syntax_tools: Fix makefile dep
erts: non-smp removal cleanup in erlexec
|
|
|
|
|
|
|
|
|
|
See also ERL-413, https://bugs.erlang.org/browse/ERL-413.
|
|
|
|
|
|
This makes it clear that Apache 2.0 applies, without dropping the old LGPL
licensing, and makes all the Syntax Tools file headers look the same as
upstream.
|
|
|
|
This can happen when a syntactically incorrect text is passed to a
merl:qquote/2,/3 call.
The parse transform optimizes calls to some functions in merl by
converting strings into templates at compile time. If this evaluation
fails (in eval_call/4 - for example because of a sytanx error in the
parsed text) the original function call should be kept unchanged.
However in case of qquote/3 the call is converted into a combination of
quote/2 and subst/2, but upon failure the original qquote/3 call is
substituted into the wrong place. E.g.:
this expression
merl:qquote(Pos, Text, Env)
is first converted to
merl:subst(merl:quote(Pos, Text), Env)
then if evaluating the quote call fails into
merl:subst(merl:qquote(Pos, Text, Env), Env)
and the expansion is run again on the internal qquote/3 argument
resulting in an infinite loop.
This is now fixed so in case of failure the original qquote/3 call is kept.
|
|
|
|
See also http://bugs.erlang.org/browse/ERL-151.
|
|
* hasse/dialyzer/improve_from_form/OTP-13547:
Update primary bootstrap
stdlib: Correct types and specs
dialyzer: Minor adjustments
dialyzer: Suppress unmatched_return for send/2
dialyzer: Improve the translation of forms to types
dialyzer: Use a cache when translating forms to types
dialyzer: Prepare erl_types:t_from_form() for a cache
dialyzer: Optimize erl_types:t_form_form()
dialyzer: Correct types
syntax_tools: Correct types
erts: Correct character repr in doc of the abstract format
stdlib: Correct types and specs
|
|
It is possible that '...' is added later (OTP 20.0), but for now we
are not sure of all details.
|
|
|
|
|
|
The pretty-printing of `...' in map types is complex. The
representation of `...' can be changed before OTP 19.
|
|
|
|
|
|
In particular, types and specs can be pretty-printed.
There are issues with macros (left behind by epp_dodger).
Typed record fields are handled. Fields are represented by triples
instead of two-tuples, which is an incompatible change.
Some attributes (-export_type, -spec, -type, &c) have been given
meaning in recent time, but the set of wild attributes (see Barklund's
spec) is not changed.
|
|
|
|
|
|
|
|
|
|
In most cases, we don't have to seed the random number generator,
as the rand:uniform/1 takes care about that itself.
|
|
Record field types have been modified due to commit 8ce35b2:
"Take out automatic insertion of 'undefined' from typed record fields".
|
|
|
|
|
|
The compiler application is now a dependency.
|
|
When building with --enable-native-libs and allowing 'make' to use
multiple threads, the compiler would crash because the erl_syntax
module was missing. Here is the recipe for making it crash on
my computer:
git clean -dxfq
MAKEFLAGS='-j10' ./otp_build setup -a --enable-native-libs
What would happen is that when merl_transform was used to compile
itself, it would call 'merl' which in turn would call erl_syntax and
erl_syntax_lib. Since those modules were not listed as dependencies,
there was no guarantee that they had actually been compiled. In fact,
erl_syntax is a large module so a compilation it with +native would
usually not finish before it was needed for compiling merl_transform.
To ensure that the erl_syntax and erl_syntax_lib modules are
available when needed, they must be explicitly listed as dependencies.
|