! 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
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 ;
GENERIC: error-type ( error -- type )
-: <definition-error> ( error definition class -- source-file-error )
- new
- swap
- [ >>asset ]
- [ where [ first2 [ >>path ] [ >>line# ] bi* ] when* ] bi
- swap >>error ; inline
-
SYMBOL: error-types
error-types [ V{ } clone ] initialize
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 ;