Age | Commit message (Collapse) | Author |
|
Two patterns, binary_segment size and map_pair key, are expressions
even in matching. If only bound variables are used we are fine but
some expressions which appears as literals needs to be lifted.
Currently only Map key binaries will use this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unary ops are normalized before core transformation, i.e. handle
negative integers as map keys.
Strictly speaking, map keys are expressions but by handling them as
patterns we can normalize negative integers.
|
|
'asm' was deprecated in 18315c16, to be removed in 18.x.
|
|
* nox/compiler/improve-core-lint:
Remove obsolete comment in core_lint
Handle return mismatches for calls and primops
Check for more return mismatches
Use +clint0 in compiler's test suites
|
|
|
|
Only exit BIFs and the match_fail primop are allowed to run where more than one
value is expected.
|
|
All expressions but calls and primops are now checked for return mismatches.
|
|
|
|
Removed dead code.
|
|
|
|
Key and value were interchanged.
|
|
=== OTP-17.1 ===
Changed Applications:
- asn1-3.0.1
- common_test-1.8.1
- compiler-5.0.1
- crypto-3.4
- debugger-4.0.1
- dialyzer-2.7.1
- diameter-1.7
- erl_interface-3.7.17
- erts-6.1
- hipe-3.11
- inets-5.10.2
- kernel-3.0.1
- mnesia-4.12.1
- observer-2.0.1
- reltool-0.6.6
- ssh-3.0.3
- ssl-5.3.5
- stdlib-2.1
- syntax_tools-1.6.15
- test_server-3.7.1
- tools-2.6.15
- typer-0.9.8
- wx-1.3
Unchanged Applications:
- cosEvent-2.1.15
- cosEventDomain-1.1.14
- cosFileTransfer-1.1.16
- cosNotification-1.1.21
- cosProperty-1.1.17
- cosTime-1.1.14
- cosTransactions-1.2.14
- edoc-0.7.13
- eldap-1.0.3
- erl_docgen-0.3.5
- et-1.5
- eunit-2.2.7
- gs-1.5.16
- ic-4.3.5
- jinterface-1.5.9
- megaco-3.17.1
- odbc-2.10.20
- orber-3.6.27
- os_mon-2.2.15
- ose-1.0
- otp_mibs-1.0.9
- parsetools-2.0.11
- percept-0.8.9
- public_key-0.22
- runtime_tools-1.8.14
- sasl-2.4
- snmp-4.25.1
- webtool-0.8.10
- xmerl-1.3.7
|
|
|
|
|
|
* egil/fix-doc-links:
doc: Fix broken links in Installation Guide
doc: Fix broken links
|
|
* maint:
[dialyzer] Correct a doc bug introduced in 0b041238
[dialyzer] Use the option 'dialyzer' to control the compiler
[dialyzer] Fix handling of literal records
|
|
|
|
|
|
This ticket is about records in Erlang code, and when to check the
fields against the (optional) types given when defining records.
Dialyzer operates on the Erlang Core format, where there are no trace
of records. The fix implemented is a Real Hack:
Given the new option 'dialyzer' erl_expand_records marks the line
number of records in a way that is undone by v3_core, which in turn
inserts annotations that can be recognized by Dialyzer.
|
|
* maint:
Fix handling of latin1 characters in false ifdef branches
add_abstract_code: Remove 'from_asm' option
Remove documentation and stub for non-exist file:file_info/1
|
|
The fallback to latin-1 encoding would not work if the invalid
UTF-8 characters occurred in a skipped branch in an -ifdef/-ifndef.
|
|
|
|
* egil/fix-maps-pretty-layout/OTP-11947:
dialyzer: Add Maps type mismatch test
hipe,compiler: Fix Map literals pretty printing
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* egil/maps-compiler-coverage:
compiler: Do not evaluate map expressions with bad keys
compiler: Throw 'nomatch' on matching with bad binary keys
compiler: Variable keys are not allowed in Maps
compiler: Strengthen Maps warnings tests
compiler: map_pair cannot be a type clause in v3_life
compiler: Remove redudant code in v3_codegen
compiler: Test deep map structure
compiler: Remove redundant clause in v3_codegen
compiler: Cover #{ [] => Var } in testcase
|
|
Map keys with large (non literal) binary keys must fail.
|
|
Even if a binary key is written as a literal the compiler may
choose to make an expression. Emit a warning in those cases
and saying the case will not match.
This is a limitation in current implementation.
|
|
No need to check for variables in Map keys.
|
|
Increases coverage.
|
|
Map pairs are encapsulated in a map.
|
|
The pass sys_core_fold did not correctly handle non-matching patterns in code
such as:
0 = case <<>> of
<<>> -> 0;
a -> 1
end.
Function case_opt_lit/3 is rewritten in two passes to first remove any
non-matching clause and only then potentially remove the related patterns
in each clause.
Reported-by: Ulf Norell
|
|
|
|
|
|
Multiple 'nil' cannot happen on instruction level.
Map keys are always unique with literals.
|
|
Coverage removed by literals.
|
|
Most dependencies introduced are exactly the dependencies to other
applications found by xref. That is, there might be real dependencies
missing. There might also be pure debug dependencies listed that
probably should be removed. Each application has to be manually
inspected in order to ensure that all real dependencies are listed.
All dependencies introduced are to application versions used in
OTP 17.0. This since the previously used version scheme wasn't
designed for this, and in order to minimize the work of introducing
the dependencies.
|