Created
September 30, 2015 20:51
-
-
Save lizmat/bc4111d25b34e52c5489 to your computer and use it in GitHub Desktop.
Moving $!signature from Code to Block: cannot find method collisions while building CORE.settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/Perl6/Actions.nqp b/src/Perl6/Actions.nqp | |
index 957644c..46814de 100644 | |
--- a/src/Perl6/Actions.nqp | |
+++ b/src/Perl6/Actions.nqp | |
@@ -7369,7 +7369,7 @@ Compilation unit '$file' contained the following violations: | |
:op('istrue'), | |
QAST::Op.new( | |
:op('callmethod'), :name('ACCEPTS'), | |
- nqp::istype($_, $*W.find_symbol(['Code'])) | |
+ nqp::istype($_, $*W.find_symbol(['Block'])) | |
?? QAST::Op.new( :op('p6capturelex'), | |
QAST::Op.new( :op('callmethod'), :name('clone'), $wval ) ) | |
!! $wval, | |
@@ -7552,7 +7552,7 @@ Compilation unit '$file' contained the following violations: | |
$block.push(QAST::Stmts.new(autosink($to_thunk))); | |
$*W.pop_lexpad(); | |
reference_to_code_object( | |
- $*W.create_simple_code_object($block, 'Code'), | |
+ $*W.create_simple_code_object($block, 'Block'), | |
$block); | |
} | |
diff --git a/src/Perl6/Metamodel/BOOTSTRAP.nqp b/src/Perl6/Metamodel/BOOTSTRAP.nqp | |
index 9ec6b24..37d788e 100644 | |
--- a/src/Perl6/Metamodel/BOOTSTRAP.nqp | |
+++ b/src/Perl6/Metamodel/BOOTSTRAP.nqp | |
@@ -872,7 +872,7 @@ my class Binder { | |
method bind_sig($capture) { | |
# Get signature and lexpad. | |
my $caller := nqp::getcodeobj(nqp::callercode()); | |
- my $sig := nqp::getattr($caller, Code, '$!signature'); | |
+ my $sig := nqp::getattr($caller, Block, '$!signature'); | |
my $lexpad := nqp::ctxcaller(nqp::ctx()); | |
# Call binder. | |
@@ -1064,7 +1064,7 @@ my class Binder { | |
} | |
method get_return_type($code) { | |
- nqp::getattr(nqp::getattr($code, Code, '$!signature'), Signature, '$!returns') | |
+ nqp::getattr(nqp::getattr($code, Block, '$!signature'), Signature, '$!returns') | |
} | |
} | |
BEGIN { nqp::p6setbinder(Binder); } # We need it in for the next BEGIN block | |
@@ -1547,11 +1547,9 @@ BEGIN { | |
# class Code { | |
# has Mu $!do; # Low level code object | |
- # has Mu $!signature; # Signature object | |
# has Mu $!compstuff; # Place for the compiler to hang stuff | |
Code.HOW.add_parent(Code, Any); | |
Code.HOW.add_attribute(Code, BOOTSTRAPATTR.new(:name<$!do>, :type(Mu), :package(Code))); | |
- Code.HOW.add_attribute(Code, BOOTSTRAPATTR.new(:name<$!signature>, :type(Mu), :package(Code))); | |
Code.HOW.add_attribute(Code, BOOTSTRAPATTR.new(:name<$!compstuff>, :type(Mu), :package(Code))); | |
# Need clone in here, plus generics instantiation. | |
@@ -1608,9 +1606,11 @@ BEGIN { | |
Code.HOW.compose_invocation(Code); | |
# class Block is Code { | |
+ # has Mu $!signature; # Signature object | |
# has Mu $!phasers; # phasers for this block | |
# has Mu $!why; | |
Block.HOW.add_parent(Block, Code); | |
+ Block.HOW.add_attribute(Block, BOOTSTRAPATTR.new(:name<$!signature>, :type(Mu), :package(Block))); | |
Block.HOW.add_attribute(Block, BOOTSTRAPATTR.new(:name<$!phasers>, :type(Mu), :package(Block))); | |
Block.HOW.add_attribute(Block, BOOTSTRAPATTR.new(:name<$!why>, :type(Mu), :package(Block))); | |
Block.HOW.add_method(Block, 'clone', nqp::getstaticcode(sub ($self) { | |
@@ -1826,7 +1826,7 @@ BEGIN { | |
my @graph; | |
for @candidates -> $candidate { | |
# Get hold of signature. | |
- my $sig := nqp::getattr($candidate, Code, '$!signature'); | |
+ my $sig := nqp::getattr($candidate, Block, '$!signature'); | |
my @params := nqp::getattr($sig, Signature, '$!params'); | |
# Create it an entry. | |
@@ -2197,7 +2197,7 @@ BEGIN { | |
# If we haven't got a possibles storage space, allocate it now. | |
$new_possibles := [] unless nqp::islist($new_possibles); | |
- my $sig := nqp::getattr($sub, Code, '$!signature'); | |
+ my $sig := nqp::getattr($sub, Block, '$!signature'); | |
unless $done_bind_check { | |
# Need a copy of the capture, as we may later do a | |
# multi-dispatch when evaluating the constraint. | |
@@ -3022,7 +3022,7 @@ nqp::sethllconfig('perl6', nqp::hash( | |
'bind_error', -> $capture { | |
# Get signature and lexpad. | |
my $caller := nqp::getcodeobj(nqp::callercode()); | |
- my $sig := nqp::getattr($caller, Code, '$!signature'); | |
+ my $sig := nqp::getattr($caller, Block, '$!signature'); | |
my $lexpad := nqp::ctxcaller(nqp::ctx()); | |
# Run full binder to produce an error. | |
diff --git a/src/Perl6/World.nqp b/src/Perl6/World.nqp | |
index ed1e967..78a69b9 100644 | |
--- a/src/Perl6/World.nqp | |
+++ b/src/Perl6/World.nqp | |
@@ -1774,7 +1774,7 @@ class Perl6::World is HLL::World { | |
my $block := self.push_lexpad($/); | |
$block.push($to_thunk); | |
self.pop_lexpad(); | |
- self.create_simple_code_object($block, 'Code'); | |
+ self.create_simple_code_object($block, 'Block'); | |
} | |
# Creates a simple code object with an empty signature | |
@@ -1806,7 +1806,7 @@ class Perl6::World is HLL::World { | |
# Attaches a signature to a code object, and gives the | |
# signature its backlink to the code object. | |
method attach_signature($code, $signature) { | |
- my $code_type := self.find_symbol(['Code']); | |
+ my $code_type := self.find_symbol(['Block']); | |
my $sig_type := self.find_symbol(['Signature']); | |
nqp::bindattr($code, $code_type, '$!signature', $signature); | |
nqp::bindattr($signature, $sig_type, '$!code', $code); | |
@@ -2068,7 +2068,7 @@ class Perl6::World is HLL::World { | |
# Add as phaser. | |
$block[0].push($phaser_block); | |
self.add_phaser($/, $phaser, | |
- self.create_code_object($phaser_block, 'Code', | |
+ self.create_code_object($phaser_block, 'Block', | |
self.create_signature(nqp::hash('parameter_objects', [])))); | |
} | |
@@ -2696,7 +2696,7 @@ class Perl6::World is HLL::World { | |
# Set up capturing code. | |
my $capturer := self.cur_lexpad(); | |
my $c_block := QAST::Block.new( :blocktype('declaration_static') ); | |
- self.create_simple_code_object($c_block, 'Code'); | |
+ self.create_simple_code_object($c_block, 'Block'); | |
$capturer[0].push(QAST::Op.new( | |
:op('callmethod'), :name('resolve'), | |
QAST::WVal.new( :value($fixup_list) ), | |
diff --git a/src/core/Block.pm b/src/core/Block.pm | |
index 44d2d5f..0d140a2 100644 | |
--- a/src/core/Block.pm | |
+++ b/src/core/Block.pm | |
@@ -1,8 +1,19 @@ | |
my class Block { # declared in BOOTSTRAP | |
# class Block is Code { | |
+ # has Mu $!signature; # Signature object | |
# has Mu $!phasers; | |
# has Mu $!why; | |
+ multi method ACCEPTS(Code:D $self: Mu $topic) { | |
+ $self.count ?? $self($topic) !! $self() | |
+ } | |
+ | |
+ method signature(Code:D:) { $!signature } | |
+ method arity(Code:D:) { $!signature.arity } | |
+ method count(Code:D:) { $!signature.count } | |
+ method of(Code:D:) { $!signature.returns } | |
+ method returns(Code:D:) { $!signature.returns } | |
+ | |
method add_phaser(Str $name, &block) { | |
nqp::isnull($!phasers) && | |
nqp::bindattr(self, Block, '$!phasers', nqp::hash()); | |
diff --git a/src/core/Code.pm b/src/core/Code.pm | |
index e61b9c3..18743d9 100644 | |
--- a/src/core/Code.pm | |
+++ b/src/core/Code.pm | |
@@ -1,19 +1,8 @@ | |
my class Code does Callable { # declared in BOOTSTRAP | |
# class Code is Any { | |
# has Mu $!do; # Low level code object | |
- # has Mu $!signature; # Signature object | |
# has Mu $!compstuff; # Place for the compiler to hang stuff | |
- multi method ACCEPTS(Code:D $self: Mu $topic) { | |
- $self.count ?? $self($topic) !! $self() | |
- } | |
- | |
- method arity(Code:D:) { $!signature.arity } | |
- | |
- method count(Code:D:) { $!signature.count } | |
- | |
- method signature(Code:D:) { $!signature } | |
- | |
multi method Str(Code:D:) { | |
warn( self.WHAT.perl ~ " object coerced to string (please use .gist or .perl to do that)"); self.name | |
} | |
diff --git a/src/core/Routine.pm b/src/core/Routine.pm | |
index 2890fb1..9c4a3fe 100644 | |
--- a/src/core/Routine.pm | |
+++ b/src/core/Routine.pm | |
@@ -20,8 +20,6 @@ my class Routine { # declared in BOOTSTRAP | |
# has Mu $!dispatch_order; | |
# has Mu $!dispatch_cache; | |
- method of() { self.signature.returns } | |
- method returns() { self.signature.returns } | |
method onlystar() { nqp::p6bool($!onlystar) } | |
method candidates() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Stage parse : Cannot find method 'collisions' | |
at gen/moar/m-Metamodel.nqp:2635 (blib/Perl6/Metamodel.moarvm:apply:65) | |
from gen/moar/m-Metamodel.nqp:2812 (blib/Perl6/Metamodel.moarvm:compose:94) | |
from gen/moar/m-Metamodel.nqp:1296 (blib/Perl6/Metamodel.moarvm:generate_mixin:138) | |
from gen/moar/m-Metamodel.nqp:1252 (blib/Perl6/Metamodel.moarvm:mixin:54) | |
from gen/moar/m-CORE.setting:410 (<ephemeral file>:trait_mod:<is>:63) | |
from gen/moar/m-CORE.setting:66 (<ephemeral file>:trait_mod:<is>:25) | |
from src/Perl6/World.nqp:2616 (blib/Perl6/World.moarvm::10) | |
from src/Perl6/World.nqp:3705 (blib/Perl6/World.moarvm:ex-handle:0) | |
from src/Perl6/World.nqp:2637 (blib/Perl6/World.moarvm:apply_trait:70) | |
from gen/moar/m-Perl6-Actions.nqp:4483 (blib/Perl6/Actions.moarvm::37) | |
from gen/moar/m-Perl6-Actions.nqp:2943 (blib/Perl6/Actions.moarvm::13) | |
from src/Perl6/World.nqp:3705 (blib/Perl6/World.moarvm:ex-handle:0) | |
from gen/moar/m-Perl6-Actions.nqp:2943 (blib/Perl6/Actions.moarvm::44) | |
from gen/moar/m-Perl6-Actions.nqp:2942 (blib/Perl6/Actions.moarvm:routine_def:2387) | |
from gen/moar/stage2/QRegex.nqp:1313 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!reduce:25) | |
from gen/moar/stage2/QRegex.nqp:1267 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!cursor_pass:0) | |
from src/Perl6/Grammar.nqp:2538 (blib/Perl6/Grammar.moarvm:routine_def:1647) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator:sym<sub>:147) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator:10) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:term:sym<routine_declarator>:57) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from src/Perl6/Grammar.nqp:3638 (blib/Perl6/Grammar.moarvm:termish:0) | |
from gen/moar/stage2/NQPHLL.nqp:681 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:EXPR:74) | |
from src/Perl6/Grammar.nqp:3679 (blib/Perl6/Grammar.moarvm:EXPR:28) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:arglist:128) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:semiarglist:69) | |
from src/Perl6/Grammar.nqp:3218 (blib/Perl6/Grammar.moarvm:args:135) | |
from src/Perl6/Grammar.nqp:3112 (blib/Perl6/Grammar.moarvm:term:sym<identifier>:191) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from src/Perl6/Grammar.nqp:3638 (blib/Perl6/Grammar.moarvm:termish:0) | |
from gen/moar/stage2/NQPHLL.nqp:681 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:EXPR:74) | |
from src/Perl6/Grammar.nqp:3679 (blib/Perl6/Grammar.moarvm:EXPR:28) | |
from src/Perl6/Grammar.nqp:4131 (blib/Perl6/Grammar.moarvm:infix:sym<?? !!>:90) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:infix:10) | |
from src/Perl6/Grammar.nqp:3711 (blib/Perl6/Grammar.moarvm:infixish:714) | |
from gen/moar/stage2/NQPHLL.nqp:738 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:EXPR:304) | |
from src/Perl6/Grammar.nqp:3679 (blib/Perl6/Grammar.moarvm:EXPR:28) | |
from src/Perl6/Grammar.nqp:1209 (blib/Perl6/Grammar.moarvm:statement:395) | |
from src/Perl6/Grammar.nqp:1144 (blib/Perl6/Grammar.moarvm:statementlist:280) | |
from src/Perl6/Grammar.nqp:1325 (blib/Perl6/Grammar.moarvm:blockoid:246) | |
from src/Perl6/Grammar.nqp:1273 (blib/Perl6/Grammar.moarvm:pblock:675) | |
from src/Perl6/Grammar.nqp:1242 (blib/Perl6/Grammar.moarvm:xblock:136) | |
from src/Perl6/Grammar.nqp:1385 (blib/Perl6/Grammar.moarvm:statement_control:sym<if>:225) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:statement_control:10) | |
from src/Perl6/Grammar.nqp:1209 (blib/Perl6/Grammar.moarvm:statement:365) | |
from src/Perl6/Grammar.nqp:1144 (blib/Perl6/Grammar.moarvm:statementlist:280) | |
from src/Perl6/Grammar.nqp:1325 (blib/Perl6/Grammar.moarvm:blockoid:246) | |
from src/Perl6/Grammar.nqp:2592 (blib/Perl6/Grammar.moarvm:method_def:2112) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator:sym<method>:147) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator:10) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:term:sym<routine_declarator>:57) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from src/Perl6/Grammar.nqp:3638 (blib/Perl6/Grammar.moarvm:termish:0) | |
from gen/moar/stage2/NQPHLL.nqp:681 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:EXPR:74) | |
from src/Perl6/Grammar.nqp:3679 (blib/Perl6/Grammar.moarvm:EXPR:28) | |
from src/Perl6/Grammar.nqp:1209 (blib/Perl6/Grammar.moarvm:statement:395) | |
from src/Perl6/Grammar.nqp:1144 (blib/Perl6/Grammar.moarvm:statementlist:280) | |
from src/Perl6/Grammar.nqp:1325 (blib/Perl6/Grammar.moarvm:blockoid:246) | |
from src/Perl6/Grammar.nqp:2266 (blib/Perl6/Grammar.moarvm:package_def:2370) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:package_declarator:sym<class>:175) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:package_declarator:10) | |
from src/Perl6/Grammar.nqp:2383 (blib/Perl6/Grammar.moarvm:scoped:378) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:scope_declarator:sym<my>:107) | |
from gen/moar/stage2/QRegex.nqp:1350 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:!protoregex:109) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:scope_declarator:10) | |
from <unknown>:1 (blib/Perl6/Grammar.moarvm:term:sym<scope_declarator>:57) | |
re/nqp/lib/NQPHLL.moarvm:EXPR:74) | |
from src/Perl6/Grammar.nqp:3679 (blib/Perl6/Grammar.moarvm:EXPR:28) | |
from src/Perl6/Grammar.nqp:1209 (blib/Perl6/Grammar.moarvm:statement:395) | |
from src/Perl6/Grammar.nqp:1144 (blib/Perl6/Grammar.moarvm:statementlist:280) | |
from gen/moar/stage2/NQPHLL.nqp:898 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:LANG:146) | |
from src/Perl6/Grammar.nqp:1536 (blib/Perl6/Grammar.moarvm:FOREIGN_LANG:67) | |
from src/Perl6/Grammar.nqp:1121 (blib/Perl6/Grammar.moarvm:comp_unit:1048) | |
from src/Perl6/Grammar.nqp:416 (blib/Perl6/Grammar.moarvm:TOP:528) | |
from gen/moar/stage2/QRegex.nqp:2021 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/QRegex.moarvm:parse:44) | |
from gen/moar/stage2/NQPHLL.nqp:1585 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:parse:80) | |
from gen/moar/stage2/NQPHLL.nqp:1541 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:compile:202) | |
from gen/moar/stage2/NQPHLL.nqp:1277 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:eval:62) | |
from gen/moar/stage2/NQPHLL.nqp:1497 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:evalfiles:91) | |
from gen/moar/stage2/NQPHLL.nqp:1391 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:command_eval:214) | |
from src/Perl6/Compiler.nqp:65 (blib/Perl6/Compiler.moarvm:command_eval:93) | |
from gen/moar/stage2/NQPHLL.nqp:1365 (/Users/liz/Github/rakudo.moar/install/share/nqp/lib/NQPHLL.moarvm:command_line:114) | |
from gen/moar/m-main.nqp:39 (perl6.moarvm:MAIN:18) | |
from gen/moar/m-main.nqp:35 (perl6.moarvm:<mainline>:197) | |
from <unknown>:1 (perl6.moarvm:<main>:8) | |
from <unknown>:1 (perl6.moarvm:<entry>:9) | |
make: *** [CORE.setting.moarvm] Error 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment