From f1113b7c2a1136fb81ab6e2c3be64430d5daed74 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 22 Apr 2008 16:29:10 -0500 Subject: [PATCH] Fix case bug --- core/combinators/combinators.factor | 2 +- core/optimizer/known-words/known-words.factor | 3 ++- core/optimizer/optimizer-tests.factor | 17 ++++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/combinators/combinators.factor b/core/combinators/combinators.factor index e3d0f88680..da98a78736 100755 --- a/core/combinators/combinators.factor +++ b/core/combinators/combinators.factor @@ -150,7 +150,7 @@ M: hashtable hashcode* drop ] [ dup length 4 <= - over keys [ word? ] contains? or + over keys [ [ word? ] [ wrapper? ] bi or ] contains? or [ linear-case-quot ] [ diff --git a/core/optimizer/known-words/known-words.factor b/core/optimizer/known-words/known-words.factor index 91d0c1c0de..6e1aacff44 100755 --- a/core/optimizer/known-words/known-words.factor +++ b/core/optimizer/known-words/known-words.factor @@ -60,7 +60,8 @@ sequences.private combinators ; [ value-literal sequence? ] [ drop f ] if ; : member-quot ( seq -- newquot ) - [ [ t ] ] { } map>assoc [ drop f ] suffix [ nip case ] curry ; + [ literalize [ t ] ] { } map>assoc + [ drop f ] suffix [ nip case ] curry ; : expand-member ( #call -- ) dup node-in-d peek value-literal member-quot f splice-quot ; diff --git a/core/optimizer/optimizer-tests.factor b/core/optimizer/optimizer-tests.factor index 14dcd62c61..6f4ae2c1d5 100755 --- a/core/optimizer/optimizer-tests.factor +++ b/core/optimizer/optimizer-tests.factor @@ -1,9 +1,9 @@ USING: arrays compiler.units generic hashtables inference kernel -kernel.private math optimizer prettyprint sequences sbufs -strings tools.test vectors words sequences.private quotations -optimizer.backend classes classes.algebra inference.dataflow -classes.tuple.private continuations growable optimizer.inlining -namespaces hints ; +kernel.private math optimizer generator prettyprint sequences +sbufs strings tools.test vectors words sequences.private +quotations optimizer.backend classes classes.algebra +inference.dataflow classes.tuple.private continuations growable +optimizer.inlining namespaces hints ; IN: optimizer.tests [ H{ { 1 5 } { 3 4 } { 2 5 } } ] [ @@ -349,3 +349,10 @@ USE: sequences.private 1 2 3.0 3 counter-example ; [ 2 4 6.0 0 ] [ counter-example' ] unit-test + +: member-test { + - * / /i } member? ; + +\ member-test must-infer +[ ] [ \ member-test word-dataflow optimize 2drop ] unit-test +[ t ] [ \ + member-test ] unit-test +[ f ] [ \ append member-test ] unit-test