Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-05-04 | Update copyright year | Raimo Niskanen | |
2017-02-21 | encode/decode: Include the stack trace in error returns | Björn Gustavsson | |
The generated encode/2 and decode/2 functions can return cryptic error messages. Consider this ASN.1 spec: T DEFINITIONS AUTOMATIC TAGS ::= BEGIN S ::= SEQUENCE { b BOOLEAN, i INTEGER (1..100), j INTEGER (0..7), s OCTET STRING } END In OTP 19, the error terms will look like this: Eshell V8.2 (abort with ^G) 1> asn1ct:compile('T', [ber]). ok 2> rr('T'). ['S'] 3> 'T':encode('S', #'S'{}). {error,{asn1,{encode_boolean,undefined}}} 4> 'T':encode('S', #'S'{b=false}). {error,{asn1,{encode_integer,undefined}}} 5> 'T':encode('S', #'S'{b=false,i=7,j=0}). {error,{asn1,function_clause}} Some error terms are clearer than other. In the first error term, it is clear that the error refers to the 'b' field, since there is only one BOOLEAN in 'S'. The second error term could refer to either 'i' or 'j'. The last error term... well... in this case we can infer that it must refer to 's'. The easiest way to provide more information is to include the stack trace with line numbers in the error term: 3> 'T':encode('S', #'S'{b=false}). {error,{asn1,{{encode_integer,undefined}, [{'T',encode_integer,2,[{file,"T.erl"},{line,240}]}, {'T',enc_S,2,[{file,"T.erl"},{line,102}]}, {'T',encode,2,[{file,"T.erl"},{line,36}]}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {shell,exprs,7,[{file,"shell.erl"},{line,686}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,641}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,626}]}]}}} By looking at the generated Erlang code, we can see that encoding failed for 'i'. This is an compatible change. All that the documentation says is that the format of the error tuple is: {error,{asn1,Description}} With this change, Description is always a tuple: {ErrorDescription,StackTrace} Alternatives considered: Providing more information in the error term itself and make sure there can be no 'function_clause', 'badarg', or 'badmatch' exceptions. That would be possible, but it would require a lot of work and it would increase the size of the generated code and make it slower. Therefore, this solution was rejected. | |||
2017-02-17 | PER: Slightly improve error reporting for encoding | Björn Gustavsson | |
Generate slightly better error reasons when encoding of INTEGER, ENUMERATED, or BOOLEAN fails. | |||
2016-03-15 | update copyright-year | Henrik Nord | |
2016-02-17 | Eliminate use of test_server.hrl and test_server_line.hrl | Björn Gustavsson | |
As a first step to removing the test_server application as as its own separate application, change the inclusion of test_server.hrl to an inclusion of ct.hrl and remove the inclusion of test_server_line.hrl. | |||
2016-01-21 | PER: Correct compilation of named INTEGERs | Björn Gustavsson | |
When a constrained INTEGER has more than 16536 values and named values, the compiler would crash when compiling to the PER format. Example: Longitude ::= INTEGER { oneMicrodegreeEast(10), oneMicrodegreeWest(-10), unavailable(1800000001) } (-1799999999..1800000001) Reported-by: Ingars | |||
2015-06-18 | Change license text to APLv2 | Bruce Yinhe | |
2015-01-12 | BER: Fix ENUMERATED with negative values | Björn Gustavsson | |
The ASN.1 compiler would go into an infinite loop if a value in an ENUMERATED was negative. | |||
2013-09-27 | Teach the ASN.1 compiler the no_ok_wrapper option | Björn Gustavsson | |
Add the no_ok_wrapper option so that the generated M:encode/2 and M:decode/2 functions will not wrap a successful return value in an {ok,...} tuple. Errors will cause exceptions. Eliminating the wrapping tuple allows simpler nesting of calls. | |||
2013-09-18 | Eliminate the use of asn1_wrapper | Björn Gustavsson | |
The asn1_wrapper made some sense when encode functions could either produce a list or a binary, depending on the backend. Now encode functions always produce a binary. To improve readbility of the test suites, eliminate the asn1_wrapper functions by replacing them with calls to one of the roundtrip functions in asn1_test_lib. When it is not possible to use the roundtrip functions, call the module in question directly. While at it, also remove ?line macros that are near to the touched code and use asn1_test_lib:hex_to_bin/1 instead of home-brewn hex conversion routines. | |||
2013-09-18 | asn1_test_lib: Add roundtrip functions and use them everywhere | Björn Gustavsson | |
Even if the roundtrip functions are very simply, putting them here makes it possible to change its behavior in one place (e.g. if we are to change encode and decode not to wrap the result in a ok tuple in some future release). | |||
2013-06-12 | Update copyright years | Björn-Egil Dahlberg | |
2013-05-31 | testPrim: Simplify test cases using a roundtrip function | Björn Gustavsson | |
While at it, also test more integer values. | |||
2013-03-12 | PER: Ensure that the complete encoding is at least one byte | Björn Gustavsson | |
If the encoding is empty (i.e. if a top-level type is single-valued and therefore not encoding), the result should be a single zero byte. | |||
2012-02-28 | [asn1] Parallelize test suites | Adam Lindberg | |
2011-08-01 | Pass compiler options directly through to the asn1 compiler in order to test ↵ | Lukas Larsson | |
nif enabled asn1 | |||
2010-03-16 | Merge branch 'bg/asn1-tests' into dev | Erlang/OTP | |
* bg/asn1-tests: asn1 tests: Let ts:run() build the tests asn1 tests: No longer tolerate compilation warnings asn1 tests: Eliminate use of deprecated concat_binary/1 asn1 tests: Eliminate warning for an unused variable asn1 tests: Modernize guard tests asn1 tests: Clean up comments asn1 tests: Don't refer to $ERL_TOP in compiler options OTP-8520 bg/asn1-tests | |||
2010-03-11 | asn1 tests: Don't refer to $ERL_TOP in compiler options | Björn Gustavsson | |
On Windows, $ERL_TOP contains a cygwin-style pathname that can be used in Makefiles to (for instance) include other Makefiles, but must not be passed to non-cygwin programs such as "erlc". Therefore, using compiler options such as "-I $(ERL_TOP)/lib/test_server/include" will not work on Windows. Fix this problem by include "test_server.hrl" using -include_lib() instead of -include(). That works because -include_lib() searches for include files in the code path without the need for any -I options. | |||
2010-02-19 | OTP-8463 Support for EXTENSIBILITY IMPLIED and SET/SEQ OF NamedType is | Kenneth Lundin | |
added. |