Age | Commit message (Collapse) | Author |
|
The previous code looked at the actual parameters supplied when
instantiating the type to determine the type of the argument; the
correct way is to determine the type by looking at the governor and
case of the formal parameter.
|
|
Check the formal parameters for a parameterized type definition.
If the governor for a formal parameter is absent, the formal parameter
must be in upper case.
|
|
Definitions for parameterized types are verified once very early,
and one more time when they are instantiated.
Errors found during the first check were ignored, so errors for
unused parameterized types were not reported.
|
|
Before classes were fully implemented, there was support for
ABSTRACT-SYNTAX and TYPE-IDENTIFIER. Some of that code is still
there and is no longer used. Get rid of it and correct comments.
|
|
Attempting to compile:
SomeType{SOME-CLASS-NAME, SOME-CLASS-NAME:SomeSet} ::= ...
SEQUENCE {
something SOME-CLASS-NAME.&id({SomeSet})
}
would crash the compiler, because the actual parameter for
SOME-CLASS-NAME was not substituted into the governor for
the SomeSet parameter.
While we are at it, combine the functionality of is_class/2
and get_class_def/2 (eliminating is_class/2). Most callers
call both function.
|
|
If we want construct an #'Externaltypereference'{} from
a #classdef{} record, we will need the module name.
|
|
The only remaining use of #identifier{} in asn1ct_check was in a
temporary packaging of a value that would be ultimately be put
into #valuedef{}.
Therefore we can eliminate that last usage but putting the value
directly into a #valuedef{} and we can move the record definition
into asn1ct_parser2.
|
|
When parsing ASN.1, certain constructs can only be understood in
the full context of the entire ASN.1 module.
For instance, the value following ID in this simplified excerpt
from MTSAbstractService88:
administration-88 PORT ::= {
ID {id-pt-administration 88}
}
the value following "ID" can be interpreted either as value
for:
SEQUENCE {
id-pt-administration INTEGER
}
or as an OBJECT IDENTIFIER.
Our ASN.1 parser assumes that a SEQUENCE is meant, and if that
later turns out to be wrong, the SEQUENCE value is rewritten to
an OBJECT IDENTIFIER. The problem is that at the time of the
rewrite, we no longer know in which ASN.1 module id-pt-administration
was defined in, and we have to use the module name in the state{}
record. Unfortunately, the module name in the state{} record may
not always be correct.
While there are attempts in the code to keep the module name
up-to-date when checking imported types, it is not done consistently,
and it seems to be a difficult and error-prone task to attempt
to make it consistent.
A safer and less error-prone approach is to make sure that we
don't lose the module name while parsing. To make it clear what
we are doing, we will introduce a new #seqtag{} record that
are used for tags in SEQUENCE values. The name is based on its
primary use. The record also contains the module in case it happens
to be an OBJECT IDENTIFIER.
|
|
Make sure that we continue to follow external references until
we find a real type.
|
|
|
|
EXPORTS ALL is the same as leaving out the EXPORTS statement.
|
|
|
|
* bjorn/compiler/fix-scope-bug/OTP-12132:
sys_core_fold: Eliminate name capture bug
|
|
The scope is supposed to contain all variables that are currently
live. We need this information for certain optimizations to
avoid capturing a name (a name that is in the scope must be renamed;
for an example, see move_let_into_expr/2 or any function that calls
sub_subst_scope/1). We also use the scope to optimize sub_del_var/2
and sub_is_val/2.
When optimizing case expressions, the scope could be reset to an
empty list (because sub_new/0 was called instead of sub_new/1).
That could cause name capture if inlining was turned on.
As simple way to force this bug is to uncomment the
"-define(DEBUG, 1)." near the beginning of the file. Without this
correction, most files in the test suite fail to compile.
|
|
* nox/erl_scan-fix-column-tracking:
Properly track column numbers in erl_scan
|
|
* siri/ct-runtime-deps/OTP-12037:
[ct] Update runtime dependencies towards test_server
|
|
Conflicts:
OTP_VERSION
|
|
* ia/public_key/dialyzer:
public_key: Fix spec and documentation for pkix_crls_validate
public_key: Fix spec and documentation for PBES
|
|
|
|
* dgud/stdlib/format_status_terminate/OTP-11967:
stdlib: Call format_status even if terminate callback crashes
|
|
* michaelkschmidt/ssh_bug_fix:
Test Other Clauses of start_shell
Fix SSH CLI when using custom "shell" option
|
|
* tuncer/misspelled-another:
Fix misspellings of 'another'
|
|
By doing an abort, the create_table can be restarted
if a node go down during the transaction.
{badarg,
[{erlang,link,[undefined],[]},
{mnesia_controller,
wait_for_schema_commit_lock,0,
[{file,"mnesia_controller.erl"},
{line,303}]},
{mnesia_schema,prepare_commit,3,
[{file,"mnesia_schema.erl"},
{line,1838}]},
{mnesia_tm,commit_participant,6,
[{file,"mnesia_tm.erl"},
{line,1669}]}]}}},
|
|
|
|
|
|
* lpgauth/fix_httpc_doc_typo:
Fix typo in documentation /header_as_is/headers_as_is/
|
|
* ia/odbc/win-test:
odbc: Condition test case to avoid permission issues in Vista
|
|
|
|
* kittee/maps_only:
maps:only/2 -> maps:with/2
add maps:only/2
|
|
* ia/public_key/PBES2/OTP-11915:
public_key: Add encodeing functionality for PBES1 and PBES2
public_key: Add PBES1 decoding support
|
|
OTP-12121
* vladdu/jinterface_fun_equals:
jinterface: fix bug in equality for OtpErlangFun
|
|
|
|
* ia/inets/ipv6-tests:
inets: Enable ipv6 tests for httpd
|
|
|
|
start_shell() is called by exec, so test those cases as well.
Also add support for passing a fun to exec.
|
|
|
|
|
|
* marcus/OTP-17.2.1/mergefix:
Updated OTP version
Update release notes
|
|
|
|
* egil/proc_lib-optimizations/OTP-12060:
stdlib: Update dependencies to erts-6.2
erts: Update preloaded erlang.beam
stdlib: Use erlang:fun_info_mfa/1 in proc_lib:init_p/3
erts: Test erlang:fun_info_mfa/1
erts: Introduce erlang:fun_info_mfa/1
|
|
* nox/reedr-logging/OTP-12115:
Add number of entries to mnesia copy debug message
Add thread index to allocator enomem dump slogan
Add run queue index to process dump info
Add missing error string to syslog logging in epmd
Demote rare debug slogan of message discarding to debug build
|
|
* ia/ssl/dialyzer-certificate_requests:
ssl: Fix boolean expression
ssl: Fix broken contract
|
|
* lucafavatella/accept-ip-in-net_adm-names:
Refactor erl_epmd:names/1
Accept inet:ip_address() in net_adm:names/1
|
|
Also fixed some cases where Dialyzer could crash due to reaching
system limits.
|
|
Sometimes bogus warnings were generated for parametrized types.
Thanks to Krzesimir Sarnecki for pointing the bug out.
Also corrected warnings where the structure of opaque types were
exposed (thanks to Kostis for pointing the bug out).
|
|
|
|
|
|
|
|
|
|
|