From 9c66311358daba43e218667f987a68b2b105c5de Mon Sep 17 00:00:00 2001 From: Elizabeth Mattijsen Date: Fri, 6 Mar 2015 12:56:44 +0100 Subject: [PATCH] Better checks for being on Win --- src/core/CompUnitRepo/Local/Installation.pm | 2 +- src/core/Exception.pm | 9 +++++---- src/core/Label.pm | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/core/CompUnitRepo/Local/Installation.pm b/src/core/CompUnitRepo/Local/Installation.pm index 1533f959ab0..000c39a2af9 100644 --- a/src/core/CompUnitRepo/Local/Installation.pm +++ b/src/core/CompUnitRepo/Local/Installation.pm @@ -106,7 +106,7 @@ sub MAIN(:$name, :$auth, :$ver, *@pos, *%named) { } else { if $file ~~ /^bin<[\\\/]>/ { - my $is-win := $*DISTRO.is-win; + state $is-win //= $*DISTRO.is-win; # only look up once mkdir "$path/bin" unless "$path/bin".IO.d; my $basename = $file.IO.basename; my $withoutext = $basename; diff --git a/src/core/Exception.pm b/src/core/Exception.pm index aaa8f5edddf..33e04e08b52 100644 --- a/src/core/Exception.pm +++ b/src/core/Exception.pm @@ -363,11 +363,12 @@ my role X::Comp is Exception { has @.highexpect; multi method gist(::?CLASS:D: :$sorry = True, :$expect = True) { if $.is-compile-time { - my $color = %*ENV // $*DISTRO.name ne 'mswin32'; + my $is-win := $*DISTRO.is-win; + my $color = %*ENV // !$is-win; my ($red, $green, $yellow, $clear) = $color ?? ("\e[31m", "\e[32m", "\e[33m", "\e[0m") !! ("", "", "", ""); - my $eject = $*DISTRO.name eq 'MSWin32' ?? "" !! "\x[23CF]"; + my $eject = $is-win ?? "" !! "\x[23CF]"; my $r = $sorry ?? self.sorry_heading() !! ""; $r ~= "$.message\nat $.filename():$.line\n------> "; $r ~= "$green$.pre$yellow$eject$red$.post$clear" if defined $.pre; @@ -390,7 +391,7 @@ my role X::Comp is Exception { } } method sorry_heading() { - my $color = %*ENV // $*DISTRO.name ne 'mswin32'; + my $color = %*ENV // !$*DISTRO.is-win; my ($red, $clear) = $color ?? ("\e[31m", "\e[0m") !! ("", ""); "$red==={$clear}SORRY!$red===$clear Error while compiling $.filename\n" } @@ -411,7 +412,7 @@ my class X::Comp::Group is Exception { multi method gist(::?CLASS:D:) { my $r = ""; if $.panic || @.sorrows { - my $color = %*ENV // $*DISTRO.name ne 'mswin32'; + my $color = %*ENV // !$*DISTRO.is-win; my ($red, $clear) = $color ?? ("\e[31m", "\e[0m") !! ("", ""); $r ~= "$red==={$clear}SORRY!$red===$clear\n"; for @.sorrows { diff --git a/src/core/Label.pm b/src/core/Label.pm index 6bcd3391e96..4ce79c51a39 100644 --- a/src/core/Label.pm +++ b/src/core/Label.pm @@ -23,11 +23,12 @@ my class Label { # XXX method leave(@args) multi method gist(Label:D:) { - my $color = %*ENV // !$*DISTRO.is-win; + my $is-win := $*DISTRO.is-win; + my $color = %*ENV // !$is-win; my ($red, $green, $yellow, $clear) = $color ?? ("\e[31m", "\e[32m", "\e[33m", "\e[0m") !! ("", "", "", ""); - my $eject = $*DISTRO.is-win ?? "" !! "\x[23CF]"; + my $eject = $is-win ?? "" !! "\x[23CF]"; "Label<$!name>(at $!file:$!line, '$green$!prematch$yellow$eject$red$!name$green$!postmatch$clear')" }