use v6-alpha;
use v6::Grammar::Native;
say "1..8";
{
my $s = '1';
v6::Grammar::Native.num( $s );
print "not " unless $/;
say "ok 1";
}
{
my $s = "'abc'";
v6::Grammar::Native.str( $s );
print "not " unless $/;
say "ok 2";
}
{
# non-matches
my $s = 'abc';
v6::Grammar::Native.num( $s );
print "not " if $/;
say "ok 3";
v6::Grammar::Native.str( $s );
print "not " if $/;
say "ok 4";
}
{
# node types
my $s = '1';
my $node = ${ v6::Grammar::Native.num( $s ) };
#say $node.WHAT;
print "not " if $node.WHAT ne 'v6::AST::NBit';
say "ok 5";
}
{
# node types
my $s = "'abc'";
my $node = ${ v6::Grammar::Native.str( $s ) };
#say $node.WHAT;
print "not " if $node.WHAT ne 'v6::AST::NStr';
say "ok 6";
}
use v6::Emitter::Native::Perl;
use v5;
sub Sub::Multi::dispatch {
my $class = shift;
my $subs = shift;
my @compat;
for my $variant (@$subs) {
my $cv = Data::Bind::_get_cv($variant);
push @compat, $variant if *$cv->{sig}->is_compatible(@_);
}
warn 'I hate vapour ware' unless @compat;
if (@compat != 1) {
warn 'I hate ambiguous software';
}
goto $compat[0];
}
use v6;
{
# node types
my $s = "'abc'";
my $node = ${ v6::Grammar::Native.str( $s ) };
my $out = v6::Emitter::Native::Perl::emit( $node );
print "not " if $s ne $out;
say "ok 7 # $out";
}
{
# node types
my $s = '1';
my $node = ${ v6::Grammar::Native.num( $s ) };
my $out = v6::Emitter::Native::Perl::emit( $node );
print "not " if $s ne $out;
say "ok 8 # $out";
}