1 ! Copyright (C) 2006 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: generic help tools io kernel math math-internals parser
5 prettyprint queues sequences sequences-internals strings test
8 : expired-error. ( obj -- )
9 "Object did not survive image save/load: " write third . ;
11 : undefined-word-error. ( obj -- )
12 "Undefined word: " write third . ;
14 : io-error. ( error -- )
15 "I/O error: " write third print ;
17 : type-check-error. ( list -- )
18 "Type check error" print
19 "Object: " write dup fourth short.
20 "Object type: " write dup fourth class .
21 "Expected type: " write third type>class . ;
23 : signal-error. ( obj -- )
24 "Operating system signal " write third . ;
26 : negative-array-size-error. ( obj -- )
27 "Cannot allocate array with negative size " write third . ;
29 : c-string-error. ( obj -- )
30 "Cannot convert to C string: " write third . ;
32 : ffi-error. ( obj -- )
33 "FFI: " write third print ;
35 : heap-scan-error. ( obj -- )
36 "Cannot do next-object outside begin/end-scan" print drop ;
38 : undefined-symbol-error. ( obj -- )
39 "The image refers to a library or symbol that was not found"
40 " at load time" append print drop ;
42 : user-interrupt. ( obj -- )
43 "User interrupt" print drop ;
45 : stack-underflow. ( obj name -- )
46 write " stack underflow" print drop ;
48 : stack-overflow. ( obj name -- )
49 write " stack overflow" print drop ;
51 ! Hook for library/cocoa/
52 DEFER: objc-error. ( alien -- )
54 : datastack-underflow. "Data" stack-underflow. ;
55 : datastack-overflow. "Data" stack-overflow. ;
56 : retainstack-underflow. "Retain" stack-underflow. ;
57 : retainstack-overflow. "Retain" stack-overflow. ;
58 : callstack-underflow. "Call" stack-underflow. ;
59 : callstack-overflow. "Call" stack-overflow. ;
61 : kernel-error ( error -- word )
62 #! Kernel errors are indexed by integers.
69 negative-array-size-error.
73 undefined-symbol-error.
77 retainstack-underflow.
83 M: kernel-error error. dup kernel-error execute ;
85 M: kernel-error error-help kernel-error ;
88 drop "No suitable method" ;
92 dup no-method-generic pprint
93 " does not define a method for the " write
94 dup no-method-object class pprint
96 "Allowed classes: " write dup no-method-generic order .
97 "Dispatching on object: " write no-method-object short. ;
99 M: no-math-method summary
100 drop "No suitable arithmetic method" ;
103 drop "Division by zero" ;
105 M: bad-escape summary
106 drop "Invalid escape code" ;
108 M: c-stream-error summary
109 drop "C stream I/O does not support this feature" ;
111 M: check-closed summary
112 drop "Attempt to perform I/O on closed stream" ;
114 M: check-method summary
115 drop "Invalid parameters for define-method" ;
117 M: check-tuple summary
118 drop "Invalid class for define-constructor" ;
120 M: check-vocab summary
121 drop "Vocabulary does not exist" ;
123 M: empty-queue summary
126 M: no-article summary
127 drop "Help article does not exist" ;
130 drop "Fall-through in cond" ;
132 M: slice-error error.
133 "Cannot create slice because " write
134 slice-error-reason print ;
137 drop "Word not found in current vocabulary search path" ;
139 : parse-dump ( error -- )
142 [ "<interactive>" ] unless*
145 dup parse-error-line [ 1 ] unless* number>string print
147 dup parse-error-text dup string? [ print ] [ drop ] if
149 parse-error-col [ 0 ] unless*
150 CHAR: \s <string> write "^" print ;
152 M: parse-error error.
153 dup parse-dump delegate error. ;
155 M: bounds-error summary drop "Sequence index out of bounds" ;
157 M: condition error. delegate error. ;
159 M: condition error-help drop f ;
161 M: assert summary drop "Assertion failed" ;
163 M: no-edit-hook summary drop "No edit hook is set" ;