<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/debugger/test, branch OTP_R15B</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Update copyright years</title>
<updated>2011-12-09T15:22:23+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2011-12-09T15:22:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=984f4e1c21f2c9f4a03024d36afd393515276a65'/>
<id>984f4e1c21f2c9f4a03024d36afd393515276a65</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>EEP-23: Allow variables in fun M:F/A</title>
<updated>2011-11-07T12:57:03+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2010-04-09T13:50:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ff432e262e65243cbc983fcb002527f8fae8c78b'/>
<id>ff432e262e65243cbc983fcb002527f8fae8c78b</id>
<content type='text'>
Currently, the external fun syntax "fun M:F/A" only supports
literals. That is, "fun lists:reverse/1" is allowed but not
"fun M:F/A".

In many real-life situations, some or all of M, F, A are
not known until run-time, and one is forced to either use
the undocumented erlang:make_fun/3 BIF or to use a
"tuple fun" (which is deprecated).

EEP-23 suggests that the parser (erl_parse) should immediately
transform "fun M:F/A" to "erlang:make_fun(M, F, A)". We have
not followed that approach in this implementation, because we
want the abstract code to mirror the source code as closely
as possible, and we also consider erlang:make_fun/3 to
be an implementation detail that we might want to remove in
the future.

Instead, we will change the abstract format for "fun M:F/A" (in a way
that is not backwards compatible), and while we are at it, we will
move the translation from "fun M:F/A" to "erlang:make_fun(M, F, A)"
from sys_pre_expand down to the v3_core pass. We will also update
the debugger and xref to use the new format.

We did consider making the abstract format backward compatible if
no variables were used in the fun, but decided against it. Keeping
it backward compatible would mean that there would be different
abstract formats for the no-variable and variable case, and tools
would have to handle both formats, probably forever.

Reference: http://www.erlang.org/eeps/eep-0023.html
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the external fun syntax "fun M:F/A" only supports
literals. That is, "fun lists:reverse/1" is allowed but not
"fun M:F/A".

In many real-life situations, some or all of M, F, A are
not known until run-time, and one is forced to either use
the undocumented erlang:make_fun/3 BIF or to use a
"tuple fun" (which is deprecated).

EEP-23 suggests that the parser (erl_parse) should immediately
transform "fun M:F/A" to "erlang:make_fun(M, F, A)". We have
not followed that approach in this implementation, because we
want the abstract code to mirror the source code as closely
as possible, and we also consider erlang:make_fun/3 to
be an implementation detail that we might want to remove in
the future.

Instead, we will change the abstract format for "fun M:F/A" (in a way
that is not backwards compatible), and while we are at it, we will
move the translation from "fun M:F/A" to "erlang:make_fun(M, F, A)"
from sys_pre_expand down to the v3_core pass. We will also update
the debugger and xref to use the new format.

We did consider making the abstract format backward compatible if
no variables were used in the fun, but decided against it. Keeping
it backward compatible would mean that there would be different
abstract formats for the no-variable and variable case, and tools
would have to handle both formats, probably forever.

Reference: http://www.erlang.org/eeps/eep-0023.html
</pre>
</div>
</content>
</entry>
<entry>
<title>debugger: Add line_number_SUITE</title>
<updated>2011-08-18T08:00:30+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-08T15:43:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8d4e85f4db41db07d4e59762d8d938ed3d6c8af5'/>
<id>8d4e85f4db41db07d4e59762d8d938ed3d6c8af5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>debugger: Include line numbers in exceptions</title>
<updated>2011-08-18T08:00:30+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-24T10:29:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=959a660d8867aa1690d70f656316db98ed8a504f'/>
<id>959a660d8867aa1690d70f656316db98ed8a504f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>emulator: Add a fourth element in exception stacktraces</title>
<updated>2011-08-16T06:58:50+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-02-16T05:54:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=be04820c070d01d7565b936fa14efc2941055e0b'/>
<id>be04820c070d01d7565b936fa14efc2941055e0b</id>
<content type='text'>
This commit is a preparation for introducing location information
(filename/line number) in stacktraces in exceptions. Currently
a stack trace looks like:

  [{Mod1,Function1,Arity1},
   .
   .
   .
   {ModN,FunctionN,ArityN}]

Add a forth element to each tuple that can be used indication
the filename and line number of the source file:

  [{Mod1,Function1,Arity1,Location1},
   .
   .
   .
   {ModN,FunctionN,ArityN,LocationN}]

In this commit, the fourth element will just be an empty list,
and we will change all code that look at or manipulate stacktraces.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit is a preparation for introducing location information
(filename/line number) in stacktraces in exceptions. Currently
a stack trace looks like:

  [{Mod1,Function1,Arity1},
   .
   .
   .
   {ModN,FunctionN,ArityN}]

Add a forth element to each tuple that can be used indication
the filename and line number of the source file:

  [{Mod1,Function1,Arity1,Location1},
   .
   .
   .
   {ModN,FunctionN,ArityN,LocationN}]

In this commit, the fourth element will just be an empty list,
and we will change all code that look at or manipulate stacktraces.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't include tail-recursive calls in stacktraces</title>
<updated>2011-08-16T06:58:48+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-31T06:40:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d6dc673a00f6244b03e1e9c849e3267b141c23c7'/>
<id>d6dc673a00f6244b03e1e9c849e3267b141c23c7</id>
<content type='text'>
The stacktrace in debugger-generated exceptions should be
as similar to stacktraces in BEAM-generated exceptions as
possible.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The stacktrace in debugger-generated exceptions should be
as similar to stacktraces in BEAM-generated exceptions as
possible.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix binary matching in the debugger</title>
<updated>2011-08-16T06:58:48+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-22T04:23:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=f2e0e976382eddd3d120110c87882a2185e868aa'/>
<id>f2e0e976382eddd3d120110c87882a2185e868aa</id>
<content type='text'>
'eval_bits' is a common utility module used for evaluting binary
construction and matching. The functions that do matching
(match_bits/{6,7} and bin_gen/6) are supposed to treat the bindings as
an abstract data type, but they assume that the bindings have the same
representation as in the erl_eval module.  That may cause binary
matching to fail in the debugger, because the debugger represents the
bindings as an unordered list of two-tuples, while the erl_eval
modules uses an ordered list of two-tuple (an ordset).

One way to fix the problem would be to let the debugger to use ordered
lists to represent the bindings. Unfortunately, that would also change
how the bindings are presented in the user interface. Currently, the
variable have most been recently assigned is shown first, which is
convenient.

Fix the matching problem by mending the leaky abstraction in
eval_bits.  The matching functions needs to be passed two additional
operations: one for looking up a variable in the bindings and one for
adding a binding. Those operations could be passed as two more funs
(in addition to the evaluation and match fun already passed), but the
functions already have too many arguments. Therefore, change the
meaning of the match fun, so that the first argument is the operation
to perform ('match', 'binding', or 'add_binding') and second argument
is a tuple with arguments for the operation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
'eval_bits' is a common utility module used for evaluting binary
construction and matching. The functions that do matching
(match_bits/{6,7} and bin_gen/6) are supposed to treat the bindings as
an abstract data type, but they assume that the bindings have the same
representation as in the erl_eval module.  That may cause binary
matching to fail in the debugger, because the debugger represents the
bindings as an unordered list of two-tuples, while the erl_eval
modules uses an ordered list of two-tuple (an ordset).

One way to fix the problem would be to let the debugger to use ordered
lists to represent the bindings. Unfortunately, that would also change
how the bindings are presented in the user interface. Currently, the
variable have most been recently assigned is shown first, which is
convenient.

Fix the matching problem by mending the leaky abstraction in
eval_bits.  The matching functions needs to be passed two additional
operations: one for looking up a variable in the bindings and one for
adding a binding. Those operations could be passed as two more funs
(in addition to the evaluation and match fun already passed), but the
functions already have too many arguments. Therefore, change the
meaning of the match fun, so that the first argument is the operation
to perform ('match', 'binding', or 'add_binding') and second argument
is a tuple with arguments for the operation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Eliminate warnings in test suites</title>
<updated>2011-08-16T06:58:48+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-17T13:38:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3a7e7db5280dfdc7ef6488fb66a2cf60950ca34c'/>
<id>3a7e7db5280dfdc7ef6488fb66a2cf60950ca34c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update test suites that have been copied from other applications</title>
<updated>2011-08-16T06:58:48+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-03-17T15:13:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ec77d4e3705bf9edd9542c2a62786a1251c69129'/>
<id>ec77d4e3705bf9edd9542c2a62786a1251c69129</id>
<content type='text'>
A long time ago, test suites were copied from other applications.
Copy the tests again to get more test cases.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A long time ago, test suites were copied from other applications.
Copy the tests again to get more test cases.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'hw/call-chmod-without-f' into dev</title>
<updated>2011-03-30T15:35:10+00:00</updated>
<author>
<name>Henrik Nord</name>
<email>henrik@erlang.org</email>
</author>
<published>2011-03-30T15:28:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=033469177c0337ce0dfde3a5a6478179389ba8c0'/>
<id>033469177c0337ce0dfde3a5a6478179389ba8c0</id>
<content type='text'>
* hw/call-chmod-without-f:
  Call chmod without the "-f" flag

Conflicts:
	erts/emulator/test/Makefile
	lib/asn1/test/Makefile
	lib/crypto/test/Makefile
	lib/debugger/test/Makefile
	lib/docbuilder/test/Makefile
	lib/edoc/test/Makefile
	lib/erl_interface/test/Makefile
	lib/inviso/test/Makefile
	lib/parsetools/test/Makefile
	lib/percept/test/Makefile
	lib/ssl/test/Makefile
	lib/syntax_tools/test/Makefile
	lib/test_server/test/Makefile
	lib/tools/test/Makefile

OTP-9170
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* hw/call-chmod-without-f:
  Call chmod without the "-f" flag

Conflicts:
	erts/emulator/test/Makefile
	lib/asn1/test/Makefile
	lib/crypto/test/Makefile
	lib/debugger/test/Makefile
	lib/docbuilder/test/Makefile
	lib/edoc/test/Makefile
	lib/erl_interface/test/Makefile
	lib/inviso/test/Makefile
	lib/parsetools/test/Makefile
	lib/percept/test/Makefile
	lib/ssl/test/Makefile
	lib/syntax_tools/test/Makefile
	lib/test_server/test/Makefile
	lib/tools/test/Makefile

OTP-9170
</pre>
</div>
</content>
</entry>
</feed>
