-! Copyright (C) 2007, 2008 Doug Coleman.
+! Copyright (C) 2007, 2008, 2011 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien arrays assocs classes
classes.tuple.private combinators.short-circuit continuations
-fry hashtables io kernel kernel.private locals.backend make
-math namespaces prettyprint quotations sequences sequences.deep
-shuffle slots.private splitting stack-checker vectors vocabs
-words words.alias ;
+fry hashtables io kernel kernel.private locals.backend make math
+math.private namespaces prettyprint quotations sequences
+sequences.deep shuffle slots.private splitting stack-checker
+vectors vocabs words words.alias ;
IN: lint
{ rot [ [ swap ] dip swap ] }
{ rot [ swapd swap ] }
{ over [ dup swap ] }
- { tuck [ dup -rot ] }
{ swapd [ [ swap ] dip ] }
{ 2nip [ nip nip ] }
{ 2drop [ drop drop ] }
[ compose compose ]
[ empty? ] [ empty? not ]
[ dup empty? ] [ dup empty? not ]
+ [ 2dup both-fixnums? ]
+ [ [ drop ] prepose ]
+ [ 1 0 ? ]
}
: lintable-word? ( word -- ? )
} 1&&
]
- ! Remove [ { foo } declare class ]
+ ! Remove [ { foo } declare class-of ]
[
{
[ length 3 = ]
[ first { [ array? ] [ length 1 = ] } 1&& ]
[ second \ declare = ]
- [ third \ class = ]
+ [ third \ class-of = ]
} 1&&
]
lintable-words load-definitions
! Remove words that are their own definition
- [ [ [ def>> ] [ 1quotation ] bi = not ] filter ] assoc-map
+ [ [ [ def>> ] [ 1quotation ] bi = ] reject ] assoc-map
! Add manual definitions
manual-substitutions over '[ _ push-at ] assoc-each
M: sequence run-lint ( seq -- seq )
[ dup lint ] { } map>assoc trim-self
- [ second empty? not ] filter filter-symbols ;
+ [ second empty? ] reject filter-symbols ;
M: word run-lint ( word -- seq ) 1array run-lint ;