84 lines
2.3 KiB
Factor
84 lines
2.3 KiB
Factor
! Copyright (C) 2006, 2008 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: kernel generic sequences io words arrays summary effects
|
|
assocs accessors namespaces compiler.errors stack-checker.values
|
|
stack-checker.recursive-state ;
|
|
IN: stack-checker.errors
|
|
|
|
: pretty-word ( word -- word' )
|
|
dup method-body? [ "method-generic" word-prop ] when ;
|
|
|
|
TUPLE: inference-error error type word ;
|
|
|
|
M: inference-error compiler-error-type type>> ;
|
|
|
|
: (inference-error) ( ... class type -- * )
|
|
[ boa ] dip
|
|
recursive-state get word>>
|
|
\ inference-error boa throw ; inline
|
|
|
|
: inference-error ( ... class -- * )
|
|
+error+ (inference-error) ; inline
|
|
|
|
: inference-warning ( ... class -- * )
|
|
+warning+ (inference-error) ; inline
|
|
|
|
TUPLE: literal-expected what ;
|
|
|
|
: literal-expected ( what -- * ) \ literal-expected inference-warning ;
|
|
|
|
M: object (literal) "literal value" literal-expected ;
|
|
|
|
TUPLE: unbalanced-branches-error branches quots ;
|
|
|
|
: unbalanced-branches-error ( branches quots -- * )
|
|
\ unbalanced-branches-error inference-error ;
|
|
|
|
TUPLE: too-many->r ;
|
|
|
|
: too-many->r ( -- * ) \ too-many->r inference-error ;
|
|
|
|
TUPLE: too-many-r> ;
|
|
|
|
: too-many-r> ( -- * ) \ too-many-r> inference-error ;
|
|
|
|
TUPLE: missing-effect word ;
|
|
|
|
: missing-effect ( word -- * )
|
|
pretty-word \ missing-effect inference-error ;
|
|
|
|
TUPLE: effect-error word inferred declared ;
|
|
|
|
: effect-error ( word inferred declared -- * )
|
|
\ effect-error inference-error ;
|
|
|
|
TUPLE: recursive-quotation-error quot ;
|
|
|
|
: recursive-quotation-error ( word -- * )
|
|
\ recursive-quotation-error inference-error ;
|
|
|
|
TUPLE: undeclared-recursion-error word ;
|
|
|
|
: undeclared-recursion-error ( word -- * )
|
|
\ undeclared-recursion-error inference-error ;
|
|
|
|
TUPLE: diverging-recursion-error word ;
|
|
|
|
: diverging-recursion-error ( word -- * )
|
|
\ diverging-recursion-error inference-error ;
|
|
|
|
TUPLE: unbalanced-recursion-error word height ;
|
|
|
|
: unbalanced-recursion-error ( word height -- * )
|
|
\ unbalanced-recursion-error inference-error ;
|
|
|
|
TUPLE: inconsistent-recursive-call-error word ;
|
|
|
|
: inconsistent-recursive-call-error ( word -- * )
|
|
\ inconsistent-recursive-call-error inference-error ;
|
|
|
|
TUPLE: unknown-primitive-error ;
|
|
|
|
: unknown-primitive-error ( -- * )
|
|
\ unknown-primitive-error inference-error ;
|