Skip to content

Commit

Permalink
Use compiler language version as default when CORE is being compiled
Browse files Browse the repository at this point in the history
Metamodel::Versioning would set `ver` from compiler's `language_version`
method if value is not provided. This would be done only if a `CORE` is
being compiled at the time. This would set all versionized objects
version to the version of the core they're defined in.

`t/02-rakudo/14-revisions.t` provides an example.

#3107
  • Loading branch information
vrurg committed Aug 7, 2019
1 parent 38aa128 commit fc09bc6
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/ClassHOW.nqp
Expand Up @@ -52,7 +52,7 @@ class Perl6::Metamodel::ClassHOW
my $obj := nqp::settypehll($new_type, 'perl6');
$metaclass.set_name($obj, $name // "<anon|{$anon_id++}>");
self.add_stash($obj);
$metaclass.set_ver($obj, $ver) if $ver;
$metaclass.set_ver($obj, $ver);
$metaclass.set_auth($obj, $auth) if $auth;
$metaclass.set_api($obj, $api) if $api;
$metaclass.setup_mixin_cache($obj);
Expand Down
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/ConcreteRoleHOW.nqp
Expand Up @@ -47,7 +47,7 @@ class Perl6::Metamodel::ConcreteRoleHOW
my $metarole := self.new(:roles(@roles));
my $obj := nqp::settypehll(nqp::newtype($metarole, 'Uninstantiable'), 'perl6');
$metarole.set_name($obj, $name);
$metarole.set_ver($obj, $ver) if $ver;
$metarole.set_ver($obj, $ver);
$metarole.set_auth($obj, $auth) if $auth;
$metarole.set_api($obj, $api) if $api;
$obj;
Expand Down
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/ModuleHOW.nqp
Expand Up @@ -22,7 +22,7 @@ class Perl6::Metamodel::ModuleHOW
my $metaclass := self.new();
my $obj := nqp::settypehll(nqp::newtype($metaclass, 'Uninstantiable'), 'perl6');
$metaclass.set_name($obj, $name);
$metaclass.set_ver($obj, $ver) if $ver;
$metaclass.set_ver($obj, $ver);
$metaclass.set_auth($obj, $auth) if $auth;
$metaclass.set_api($obj, $api) if $api;
self.add_stash($obj);
Expand Down
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/NativeHOW.nqp
Expand Up @@ -25,7 +25,7 @@ class Perl6::Metamodel::NativeHOW
my $metaclass := self.new();
my $obj := nqp::settypehll(nqp::newtype($metaclass, $repr), 'perl6');
$metaclass.set_name($obj, $name);
$metaclass.set_ver($obj, $ver) if $ver;
$metaclass.set_ver($obj, $ver);
$metaclass.set_auth($obj, $auth) if $auth;
$metaclass.set_api($obj, $api) if $api;
self.add_stash($obj);
Expand Down
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/NativeRefHOW.nqp
Expand Up @@ -26,7 +26,7 @@ class Perl6::Metamodel::NativeRefHOW
my $metaclass := self.new();
my $obj := nqp::settypehll(nqp::newtype($metaclass, 'NativeRef'), 'perl6');
$metaclass.set_name($obj, $name);
$metaclass.set_ver($obj, $ver) if $ver;
$metaclass.set_ver($obj, $ver);
$metaclass.set_auth($obj, $auth) if $auth;
$metaclass.set_api($obj, $api) if $api;
self.add_stash($obj);
Expand Down
2 changes: 1 addition & 1 deletion src/Perl6/Metamodel/ParametricRoleHOW.nqp
Expand Up @@ -37,7 +37,7 @@ class Perl6::Metamodel::ParametricRoleHOW
my $metarole := self.new(:signatured($signatured), :specialize_lock(NQPLock.new));
my $type := nqp::settypehll(nqp::newtype($metarole, 'Uninstantiable'), 'perl6');
$metarole.set_name($type, $name // "<anon|{$anon_id++}>");
$metarole.set_ver($type, $ver) if $ver;
$metarole.set_ver($type, $ver);
$metarole.set_auth($type, $auth) if $auth;
$metarole.set_api($type, $api) if $api;
$metarole.set_pun_repr($type, $repr) if $repr;
Expand Down
7 changes: 6 additions & 1 deletion src/Perl6/Metamodel/Versioning.nqp
Expand Up @@ -7,7 +7,12 @@ role Perl6::Metamodel::Versioning {
method auth($obj) { $!auth // '' }
method api($obj) { $!api // '' }

method set_ver($obj, $ver) { $!ver := $ver }
method set_ver($obj, $ver) {
if $*COMPILING_CORE_SETTING && !$ver {
$ver := nqp::getcomp('perl6').language_version;
}
$!ver := $ver if $ver
}
method set_auth($obj, $auth) { $!auth := $auth }
method set_api($obj, $api) { $!api := $api }
}
9 changes: 8 additions & 1 deletion t/02-rakudo/14-revisions.t
Expand Up @@ -2,7 +2,7 @@ use lib <t/packages>;
use Test;
use Test::Helpers;

plan 2;
plan 3;

subtest "CORE.setting Revision", {
plan 3;
Expand All @@ -21,4 +21,11 @@ subtest "Modifiers", {
is-run q[use v6.d.NOMOD; print CORE-SETTING-REV], "Deprecated modifier generates a warning", :exitcode(1), :err(rx:s/No compiler available for Perl v6'.'d'.'NOMOD/);
}
subtest "Class Version", {
plan 3;
is-run qq[use v6.c; print PseudoStash.^ver], "6.c class version", :exitcode(0), :out<6.c>;
is-run qq[use v6.d; print PseudoStash.^ver], "6.c class version on 6.d compiler", :exitcode(0), :out<6.c>;
is-run qq[use v6.e.PREVIEW; print PseudoStash.^ver], "6.e class version", :exitcode(0), :out<6.e>;
}
done-testing;

0 comments on commit fc09bc6

Please sign in to comment.