| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit is the reference implementation for EEP-54, which proposes a mechanism
for providing more informational messages than simply "bad argument" when a call
to a BIF fails. Here is an example:
1> element(a, b).
** exception error: bad argument
in function element/2
called as element(a,b)
*** argument 1: not an integer
*** argument 2: not a tuple
All the details are found in EEP-54, but here are the main points:
* An extension of the format of the call-stack back trace (**stacktrace**) format
to indicate that there exists extended error information for that call, and
a convention for how extended error information can be provided.
* A new `erlang:error/3` BIF to allow libraries and applications to
raise an exception with extended error information.
* New functions `erl_error:format_exception/3` and
`erl_error:format_exception/4` to allow libraries and application to
format stacktraces in the same style as the shell.
This implementation of EEP-54 implements extended error information for all
C-implemented BIFs in the `erlang` and `ets` modules.
|
| |
|
| |
|
|
|
|
| |
This reverts commit eee1f3aba92b5a741eabfa1cb6eca0632562777a.
|
| |
|
|
|
|
| |
Fix to_string/1 to handle all kind of lists.
|
|
|
|
|
|
|
|
|
|
|
|
| |
We add `seemfa`, `seeerl`, `seetype`, `seeapp`, `seecom`, `seecref`
, `seefile` and `seeguide` in order to make it easier to reason
about what each link points to without examining the target.
This information will then be embedded in the EEP-48 chunks for
usage by other tools.
The tool used can be found here:
https://gist.github.com/garazdawi/68527d92ae5b37c8f129bfbdfffdfa68
|
|
|
|
| |
This reverts commit 63638d668efbeb4539ba301328cabbc2636fb154.
|
| |
|
|
|
|
| |
This reverts commit 50e614e7d5fee9e3bfe8a58e7f390c6ea6caf271.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The `erlang:get_stacktrace/0` BIF retrieves the stacktrace from
the previous error in the process. The problem is that the very
existence of `erlang:get_stacktrace/0` means that the stacktrace
and potentially function arguments must be kept indefinitely.
Therefore, in OTP 21, the `erlang:get_stacktrace/0` BIF was deprecated
and the syntax of try/catch extended to allow matching out the
stacktrace directly.
This commit changes `erlang:get_stacktrace/0` for OTP 23 to always
return an empty list (`[]`) and eliminates the need to keep the
stacktrace forever.
`erlang:get_stacktrace/0` is scheduled for removal in OTP 24.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
* maint:
Updated OTP version
Prepare release
# Conflicts:
# OTP_VERSION
|
| | |
|
|\ \
| |/
| |
| |
| | |
* maint:
debugger: Print Unicode atoms consistently
|
| |
| |
| |
| |
| | |
Use "~tlp" instead of "~lp". PR 1743 made it possible to have "l" and
"p" together.
|
|\ \
| |/
| |
| |
| |
| |
| |
| | |
* maint:
map_SUITE: Avoid skipping badmap17/1 in map_no_opt_SUITE
compiler tests: Avoid skipping slow tests cases in cloned modules
stdlib_SUITE: Eliminate -export_all() directive
beam_lib_SUITE, debugger_SUITE: Don't skip test of encrypted debug info
|
| |
| |
| |
| | |
Don't call the removed function crypto:info/0.
|
| | |
|
|/
|
|
| |
The added make target is described in HOWTO/TESTING.md.
|
| |
|
|
|
|
| |
This reverts commit 425889ba69b69a9b6fb14bfbef121d51b78e853a.
|
| |
|
|
|
|
| |
This reverts commit 0118046f9bda8dcf3594184fa439b79267db8017.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* rickard/make-fixes-21/OTP-15551:
Fix install phase in build system
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* rickard/make-fixes-20/OTP-15551:
Fix install phase in build system
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* rickard/make-fixes-19/OTP-15551:
Fix install phase in build system
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| | | |\
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* rickard/make-fixes-18/OTP-15551:
Fix install phase in build system
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| | | | |\
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* rickard/make-fixes-17/OTP-15551:
Fix install phase in build system
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Install of (mainly) documentation caused rebuild and
modification of the source tree even when the source
previously had been built. Also otp_patch_apply
modified the source tree when updating documentation.
This messed up the installation if installation was
performed by another user than the user that originally
built the system which not is an uncommon scenario.
- Some documentation was installed by copying files
instead of installing the files which caused faulty
access rights on files.
- The documentation was not properly updated when
applying a patch using otp_patch_apply.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This reverts commit df130102cdeca8d35fec95a0c926fd1cfec54eab.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Consider this pseudo code:
f(...) ->
Val = case Expr of
... ->
... ;
... ->
... ;
... ->
my_abort(something_went_wrong)
end,
%% Here follows code that uses Val.
.
.
.
my_abort(Reason) ->
throw({error,Reason}).
The first two clauses in the case will probably provide some
information about the type of the variable `Var`, information
that would be useful for optimizing the code that follows the
case.
However, the third clause would ruin everything. The call
to `my_abort/1` could return anything, and thus `Val` could
also have any type.
294d66a295f6 introduced module-level type analysis, which will in
general keep track of the return type of a local function
call. However, it does not improve the optimization for this specific
function. When a function never returns, that is, when its type is
`none`, it does not propagate the `none` type, but instead pretends
that the return type is `any`.
This commit extends the handling of functions that don't return to
properly handle the `none` type. Any instructions that directly
follows the function that does not return will be discarded, and the
call will be rewritten to a tail-recursive call.
For this specific example, it means that the type for `Val` deduced
from the first two clauses will be retained and can be used for
optimizing the code after the case.
|
|\ \ \ \ \ \ |
|
| |/ / / / / |
|
|\ \ \ \ \ \
| |/ / / / / |
|
| | | | | | |
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | | |
I did not find any legitimate use of "can not", however skipped
changing e.g RFCs archived in the source tree.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit fd8e49b5bddceaae803670121b603b5eee8c5c08.
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 202bb737e3deabfebee683266f4b7c42781eb521.
|