use v6-alpha;
use Test;
# See thread "@array = $scalar" on p6l started by Ingo Blechschmidt:
# L<"http://www.nntp.perl.org/group/perl.perl6.language/22959">
plan 18;
# @array = $arrayref
{
my $arrayref = [];
my @array = ($arrayref,);
is +@array, 1, '@array = ($arrayref,) does not flatten the arrayref';
}
{
my $arrayref = [];
my @array = ($arrayref);
is +@array, 1, '@array = ($arrayref) does not flatten the arrayref';
}
{
my $arrayref = [];
my @array = $arrayref;
is +@array, 1, '@array = $arrayref does not flatten the arrayref';
}
# %hash = $hashref
# Of course, these (should) give a warning ("odd number in hash construction").
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash;
try { %hash = ($hashref,) };
is +%hash, 1, '%hash = ($hashref,) does not flatten the hashref', :todo;
}
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash = ($hashref);
is +%hash, 1, '%hash = ($hashref) does not flatten the hashref', :todo;
}
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash = $hashref;
is +%hash, 1, '%hash = $hashref does not flatten the hashref', :todo;
}
# Same as above, but now we never use arrays, but only array*refs*.
# $arrayref2 = $arrayref1
{
my $foo = [];
my $bar = ($foo,);
is +$bar, 1, '$bar = ($foo,) does not flatten the arrayref';
}
{
my $foo = [];
my $bar = ($foo);
is +$bar, 3, '$bar = ($foo) does flatten the arrayref';
}
{
my $foo = [];
my $bar = $foo;
is +$bar, 3, '$bar = $foo does flatten the arrayref';
}
# $hashref2 = $hashref1
# Of course, these (should) give a warning ("odd number in hash construction").
{
my $foo = {:a(1), :b(2), :c(3)};
my $bar = ($foo,);
is +$bar, 1, '$bar = ($foo,) does not flatten the hashref';
}
{
my $foo = {:a(1), :b(2), :c(3)};
my $bar = ($foo);
is +$bar, 3, '$bar = ($foo) does flatten the hashref';
}
{
my $foo = {:a(1), :b(2), :c(3)};
my $bar = $foo;
is +$bar, 3, '$bar = $foo does flatten the hashref';
}
# Same as above, but now we directly assign into an element.
{
my $arrayref = [];
my @array;
@array[0] = ($arrayref,);
is +@array, 1, '@array[0] = ($arrayref,) does not flatten the arrayref';
}
{
my $arrayref = [];
my @array;
@array[0] = ($arrayref);
is +@array, 1, '@array[0] = ($arrayref) does not flatten the arrayref';
}
{
my $arrayref = [];
my @array;
@array[0] = $arrayref;
is +@array, 1, '@array[0] = $arrayref does not flatten the arrayref';
}
# Of course, these (should) give a warning ("odd number in hash construction").
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash;
%hash = ($hashref,);
is +%hash, 1, '%hash = ($hashref,) does not flatten the hashref';
}
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash;
%hash = ($hashref);
is +%hash, 1, '%hash = ($hashref) does not flatten the hashref';
}
{
my $hashref = {:a(1), :b(2), :c(3)};
my %hash;
%hash = $hashref;
is +%hash, 1, '%hash = $hashref does not flatten the hashref';
}