Skip to content

Commit

Permalink
Basic test for parameter interning
Browse files Browse the repository at this point in the history
  • Loading branch information
pmurias committed Apr 8, 2018
1 parent f1d73d1 commit 5b8b657
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions t/serialization/02-types.t
Expand Up @@ -542,3 +542,57 @@ sub add_to_sc($sc, $idx, $obj) {
is($dsc_type.HOW.accepts_type_called, 1, 'accepts_type is called when needed');

}

{
my $sc := nqp::createsc('TEST_SC_14_IN');
my $sh := nqp::list_s();

my $parameterizer := -> $type, $params {
nqp::newtype($type.HOW, 'Uninstantiable');
};
nqp::scsetcode($sc, 0, $parameterizer);
nqp::markcodestatic($parameterizer);

my $cr := nqp::list($parameterizer);

my $parametric_type := NQPClassHOW.new_type(:name('Parametric'), :repr('P6opaque'));
$parametric_type.HOW.add_parent($parametric_type, NQPMu);


nqp::setparameterizer($parametric_type, $parameterizer);
$parametric_type.HOW.compose($parametric_type);
add_to_sc($sc, 0, $parametric_type);

my $param_type := NQPClassHOW.new_type(:name('ParamType'), :repr('P6opaque'));
$param_type.HOW.add_parent($param_type, NQPMu);
$param_type.HOW.compose($param_type);
add_to_sc($sc, 1, $param_type);

my $serialized := nqp::serialize($sc, $sh);

my $dsc := nqp::createsc('TEST_SC_14_OUT');
nqp::deserialize($serialized, $dsc, $sh, $cr, nqp::null());

my $dsc_parametric_type := nqp::scgetobj($dsc, 0);
my $dsc_param_type := nqp::scgetobj($dsc, 1);

my $parameterized1 := nqp::parameterizetype($dsc_parametric_type, [$dsc_param_type]);

my $sc2 := nqp::createsc('TEST_SC_15_IN');
my $sh2 := nqp::list_s();

add_to_sc($sc2, 0, $parameterized1);

my $serialized2 := nqp::serialize($sc2, $sh2);

my $cr2 := nqp::list();

my $dsc2 := nqp::createsc('TEST_SC_15_OUT');
nqp::deserialize($serialized2, $dsc2, $sh2, $cr2, nqp::null());

my $dsc3 := nqp::createsc('TEST_SC_16_OUT');
nqp::deserialize($serialized2, $dsc3, $sh2, $cr2, nqp::null());

my $dsc_parameterized_a := nqp::scgetobj($dsc2, 0);
my $dsc_parameterized_b := nqp::scgetobj($dsc3, 0);
}

0 comments on commit 5b8b657

Please sign in to comment.