From f80c89f1286540f0e76c686c81b4a3a25e15e700 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 17 Apr 2009 16:16:12 -0500 Subject: [PATCH] Add fatal? flag to error types; non-fatal errors are hidden by default in error list, not shown in summary --- basis/compiler/errors/errors.factor | 1 + basis/ui/tools/error-list/error-list.factor | 2 +- basis/ui/tools/listener/listener.factor | 5 ++--- core/source-files/errors/errors.factor | 10 +++++----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/basis/compiler/errors/errors.factor b/basis/compiler/errors/errors.factor index e3174470fb..d9e2a27560 100644 --- a/basis/compiler/errors/errors.factor +++ b/basis/compiler/errors/errors.factor @@ -44,6 +44,7 @@ T{ error-type { icon "vocab:ui/tools/error-list/icons/linkage-error.tiff" } { quot [ +linkage-error+ errors-of-type values ] } { forget-quot [ compiler-errors get delete-at ] } + { fatal? f } } define-error-type : ( error word -- compiler-error ) diff --git a/basis/ui/tools/error-list/error-list.factor b/basis/ui/tools/error-list/error-list.factor index 2b1b0dabcd..6a63a70cf8 100644 --- a/basis/ui/tools/error-list/error-list.factor +++ b/basis/ui/tools/error-list/error-list.factor @@ -26,7 +26,7 @@ MEMO: error-icon ( type -- image-name ) : ( -- model gadget ) #! Linkage errors are not shown by default. - error-types get keys [ dup +linkage-error+ eq? not ] { } map>assoc + error-types get [ fatal?>> ] assoc-map [ [ [ error-icon ] dip ] assoc-map ] [ ] bi ; diff --git a/basis/ui/tools/listener/listener.factor b/basis/ui/tools/listener/listener.factor index 57689b002b..6484b8e1c4 100644 --- a/basis/ui/tools/listener/listener.factor +++ b/basis/ui/tools/listener/listener.factor @@ -358,9 +358,8 @@ interactor "completion" f { } define-command-map : ui-error-summary ( -- ) - all-errors [ - [ error-type ] map prune - [ error-icon-path 1array \ $image prefix " " 2array ] { } map-as + error-counts keys [ + [ icon>> 1array \ $image prefix " " 2array ] { } map-as { "Press " { $command tool "common" show-error-list } " to view errors." } append print-element nl ] unless-empty ; diff --git a/core/source-files/errors/errors.factor b/core/source-files/errors/errors.factor index e179c99913..f6f4f4825a 100644 --- a/core/source-files/errors/errors.factor +++ b/core/source-files/errors/errors.factor @@ -12,7 +12,7 @@ TUPLE: source-file-error error asset file line# ; : group-by-source-file ( errors -- assoc ) H{ } clone [ [ push-at ] curry [ dup file>> ] prepose each ] keep ; -TUPLE: error-type type word plural icon quot forget-quot ; +TUPLE: error-type type word plural icon quot forget-quot { fatal? initial: t } ; GENERIC: error-type ( error -- type ) @@ -34,12 +34,12 @@ error-types [ V{ } clone ] initialize error-types get at icon>> ; : error-counts ( -- alist ) - error-types get [ nip dup quot>> call( -- seq ) length ] assoc-map ; + error-types get + [ nip dup quot>> call( -- seq ) length ] assoc-map + [ [ fatal?>> ] [ 0 > ] bi* and ] assoc-filter ; : error-summary ( -- ) - error-counts - [ nip 0 > ] assoc-filter - [ + error-counts [ over [ word>> write ] [ " - show " write number>string write bl ]