chromatic said:
> On Tue, 29 Oct 2002 14:19:59 -0800, Paul Johnson wrote:
>
>> So I would like to see able to tag arbitrary information onto just
>> about everything, including files, packages, classes, subroutines,
>> blocks, control structures, statements, lines, expressions, variables
>> and whatever else I've forgotten about. Properties can be attached to
>> some of these. Can we generalise this at all?
>
>> Of course, the applicability of this is not limited to code coverage,
>> so it would be nice to have something as general and multi purpose as
>> possible.
>
>> But I don't want language support for saying that, that seems to be a
>> problem for the applications that want the data, although I'd be glad
>> to be shown that I am wrong and that the language can support that in
>> a clean and concise way. Instead, I just want somewhere to hang
>> arbitrary data.
>
> Dan started a thread about bytecode in p6i:
>
> http://archive.develooper.com/perl6-internals@;perl.org/msg13377.html
>
> I jumped on the "arbitrary metadata" soapbox, and finally distilled my
> thoughts down to this:
>
> http://archive.develooper.com/perl6-internals@;perl.org/msg13443.html
>
> It sounds like we're thinking along the same lines. This would be very
> handy for introspective tools (code coverage, refactoring browsers,
> IDEs...).
Yes, and this is the thread that insired me to post, or at least to post
now. As I mentioned, the internals support is coming along fine, but what
I'm concerned about here is support at the language level.
For example, using the coverage property:
sub check coverage(callable => $Debug && $OS ne "...")
{
my $v = shift;
if ($v > 5).coverage(id => my $cond_id = $Id++)
{
...
}
...
if ($v > 5).coverage(id => $Id++, same_as => $cond_id)
{
...
}
if (($a �� $b).coverage(truth_table => [[1, 1], [1, 0]],
comment => '$a and $b can't both be true') ��
($c && $d).coverage(truth_table => [[0, 1], [1, 1]],
comment => '$c and $d can't both be false'))
{
...
}
exec $something;
die("Whoops").coverage(coverable => 0);
}
Coming up with sensible small examples is not easy, but hopefully you get
the idea. How does the programmer tag the metadata onto the appropriate
construct?
--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net