Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge remote-tracking branch 'origin/agressive-sink-warnings' into nom
  • Loading branch information
moritz committed Feb 24, 2013
2 parents 80f798b + 2f210be commit b205e66
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions src/Perl6/Optimizer.pm
Expand Up @@ -299,6 +299,20 @@ class Perl6::Optimizer {
}
if $found {
if nqp::can($obj, 'IS_PURE') && $obj.IS_PURE {
sub widen($m) {
my int $from := $m.from;
my int $to := $m.to;
for $m.list {
$from := $_.from if $_.from < $from;
$to := $_.to if $_.to > $to;
}
nqp::substr($m.orig, $from, $to - $from);
}
if $op.node && $*VOID_CONTEXT && !$*IN_DECLARATION {
my str $op_txt := nqp::escape($op.node.Str);
my str $expr := nqp::escape(widen($op.node));
self.add_worry($op, qq[Useless use of "$op_txt" in expression "$expr" in sink context]);
}
# check if all arguments are known at compile time
my int $all_args_known := 1;
my @args := [];
Expand All @@ -323,22 +337,8 @@ class Perl6::Optimizer {
$survived := 0;
}
}
sub widen($m) {
my int $from := $m.from;
my int $to := $m.to;
for $m.list {
$from := $_.from if $_.from < $from;
$to := $_.to if $_.to > $to;
}
nqp::substr($m.orig, $from, $to - $from);
}
if $survived {
if $op.node && $*VOID_CONTEXT && !$*IN_DECLARATION {
my str $text := nqp::escape(widen($op.node));
self.add_worry($op, qq[Useless use of constant expression "$text" in sink context]);
return $NULL;

}
return $NULL if $*VOID_CONTEXT && !$*IN_DECLARATION;
$*W.add_object($ret_value);
my $wval := QAST::WVal.new(:value($ret_value));
if $op.named {
Expand Down

0 comments on commit b205e66

Please sign in to comment.