]> gitweb.factorcode.org Git - factor.git/blobdiff - core/source-files/errors/errors.factor
core: trim using lists with lint.vocabs tool
[factor.git] / core / source-files / errors / errors.factor
index 7580c04b4300f467d0a4745b86919efb0bd8cc1b..49dbf64ce953a29ffcf2d74850dde7f21c194193 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs continuations definitions init io
+USING: accessors assocs continuations definitions io
 kernel math math.parser namespaces sequences sorting ;
 IN: source-files.errors
 
@@ -13,29 +13,29 @@ M: object error-line drop f ;
 M: condition error-file error>> error-file ;
 M: condition error-line error>> error-line ;
 
-TUPLE: source-file-error error asset file line# ;
+TUPLE: source-file-error error asset path line# ;
 
-M: source-file-error error-file [ error>> error-file ] [ file>> ] bi or ;
+M: source-file-error error-file [ error>> error-file ] [ path>> ] bi or ;
 M: source-file-error error-line [ error>> error-line ] [ line#>> ] bi or ;
 M: source-file-error compute-restarts error>> compute-restarts ;
 
+: new-source-file-error ( error asset class -- source-file-error )
+    new
+        swap
+        [ >>asset ]
+        [ where [ first2 [ >>path ] [ >>line# ] bi* ] when* ] bi
+        swap >>error ; inline
+
 : sort-errors ( errors -- alist )
     [ [ line#>> 0 or ] sort-with ] { } assoc-map-as sort-keys ;
 
 : group-by-source-file ( errors -- assoc )
-    H{ } clone [ [ push-at ] curry [ dup file>> ] prepose each ] keep ;
+    [ path>> ] collect-by ;
 
 TUPLE: error-type-holder type word plural icon quot forget-quot { fatal? initial: t } ;
 
 GENERIC: error-type ( error -- type )
 
-: <definition-error> ( error definition class -- source-file-error )
-    new
-        swap
-        [ >>asset ]
-        [ where [ first2 [ >>file ] [ >>line# ] bi* ] when* ] bi
-        swap >>error ; inline
-
 SYMBOL: error-types
 
 error-types [ V{ } clone ] initialize
@@ -68,9 +68,7 @@ GENERIC: errors-changed ( observer -- )
 
 SYMBOL: error-observers
 
-[
-    V{ } clone error-observers set-global
-] "source-files.errors" add-startup-hook
+STARTUP-HOOK: [ V{ } clone error-observers set-global ]
 
 : add-error-observer ( observer -- )
     error-observers get push ;
@@ -83,7 +81,7 @@ SYMBOL: error-observers
 
 : delete-file-errors ( seq file type -- )
     [
-        [ swap file>> = ] [ swap error-type = ]
+        [ swap path>> = ] [ swap error-type = ]
         bi-curry* bi and not
     ] 2curry filter! drop
     notify-error-observers ;