: (step-into-call-next-method) ( method -- )
next-method-quot (step-into-quot) ;
-{
+<< {
(step-into-quot)
(step-into-dip)
(step-into-2dip)
(step-into-execute)
(step-into-continuation)
(step-into-call-next-method)
-} [ t "no-compile" set-word-prop ] each
+} [ t "no-compile" set-word-prop ] each >>
! Messages sent to walker thread
SYMBOL: step
SINGLETON: source-file-renderer
M: source-file-renderer row-columns
- drop first2
- [ [ source-file-icon ] [ ] [ length number>string ] tri* ] output>array ;
+ drop first2 [
+ [ source-file-icon ]
+ [ "<Listener input>" or ]
+ [ length number>string ] tri*
+ ] output>array ;
M: source-file-renderer prototype-row
drop source-file-icon "" "" 3array ;
M: source-file-renderer row-value
- drop dup [ first <pathname> ] when ;
+ drop dup [ first [ <pathname> ] [ f ] if* ] when ;
M: source-file-renderer column-titles
drop { "" "File" "Errors" } ;
drop [
{
[ error-type error-icon ]
- [ line#>> number>string ]
+ [ line#>> [ number>string ] [ "" ] if* ]
[ asset>> unparse-short ]
[ error>> summary ]
} cleave
: sort-errors ( seq -- seq' )
[ [ [ file>> ] [ line#>> ] bi 2array ] compare ] sort ;
+: file-matches? ( error pathname/f -- ? )
+ [ file>> ] [ dup [ string>> ] when ] bi* = ;
+
: <error-table-model> ( error-list -- model )
[ model>> ] [ source-file>> ] bi
- [ [ file>> ] [ string>> ] bi* = ] <search>
+ [ file-matches? ] <search>
[ sort-errors ] <arrow> ;
:: <error-table> ( error-list -- table )
new
swap
[ >>asset ]
- [
- where [ first2 ] [ "<unknown file>" 0 ] if*
- [ >>file ] [ >>line# ] bi*
- ] bi
+ [ where [ first2 [ >>file ] [ >>line# ] bi* ] when* ] bi
swap >>error ; inline
: delete-file-errors ( seq file type -- )
: error-icon-path ( type -- icon )
error-types get at icon>> ;
+: error-counts ( -- alist )
+ error-types get [ nip dup quot>> call( -- seq ) length ] assoc-map ;
+
: error-summary ( -- )
- error-types get [ nip dup quot>> call( -- seq ) length ] assoc-map
+ error-counts
[ nip 0 > ] assoc-filter
[
over