]> gitweb.factorcode.org Git - factor.git/commitdiff
hashtables/hash-sets: add some error checking...
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 6 Jul 2017 01:41:45 +0000 (18:41 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 6 Jul 2017 01:41:45 +0000 (18:41 -0700)
...to the sequence/number wrapped versions.

basis/hash-sets/sequences/sequences.factor
basis/hashtables/sequences/sequences.factor
extra/hash-sets/numbers/numbers.factor
extra/hashtables/numbers/numbers.factor

index e028ca5f4515a4fe71b8c1c819477c385461dab1..55a30f49cb49d3cdd89bf52ae95a63e91ce5009c 100644 (file)
@@ -6,6 +6,8 @@ parser sequences sets vocabs.loader ;
 
 IN: hash-sets.sequences
 
+ERROR: not-a-sequence object ;
+
 TUPLE: sequence-wrapper < wrapped-key ;
 
 C: <sequence-wrapper> sequence-wrapper
@@ -23,7 +25,8 @@ TUPLE: sequence-hash-set < wrapped-hash-set ;
 : <sequence-hash-set> ( n -- shash-set )
     <hash-set> sequence-hash-set boa ; inline
 
-M: sequence-hash-set wrap-key drop <sequence-wrapper> ;
+M: sequence-hash-set wrap-key
+    drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
 
 M: sequence-hash-set clone
     underlying>> clone sequence-hash-set boa ; inline
index d1105d35c40cadad962e2ab9c6f659d26f2af87d..c673d8c696afd0057d376ff71446043d258f6a51 100644 (file)
@@ -6,6 +6,8 @@ hashtables.wrapped kernel parser sequences vocabs.loader ;
 
 IN: hashtables.sequences
 
+ERROR: not-a-sequence object ;
+
 TUPLE: sequence-wrapper < wrapped-key ;
 
 C: <sequence-wrapper> sequence-wrapper
@@ -23,7 +25,8 @@ TUPLE: sequence-hashtable < wrapped-hashtable ;
 : <sequence-hashtable> ( n -- shashtable )
     <hashtable> sequence-hashtable boa ; inline
 
-M: sequence-hashtable wrap-key drop <sequence-wrapper> ;
+M: sequence-hashtable wrap-key
+    drop dup sequence? [ <sequence-wrapper> ] [ not-a-sequence ] if ;
 
 M: sequence-hashtable clone
     underlying>> clone sequence-hashtable boa ; inline
index 1066662f5f01221b86c0cf5ea55357eff4b6bf79..f96ace9e3354939ca237c82e3239828d5f486834 100644 (file)
@@ -6,6 +6,8 @@ math.hashcodes parser sequences vocabs.loader ;
 
 IN: hash-sets.numbers
 
+ERROR: not-a-number object ;
+
 TUPLE: number-wrapper < wrapped-key ;
 
 C: <number-wrapper> number-wrapper
@@ -23,7 +25,8 @@ TUPLE: number-hash-set < wrapped-hash-set ;
 : <number-hash-set> ( n -- shash-set )
     <hash-set> number-hash-set boa ; inline
 
-M: number-hash-set wrap-key drop <number-wrapper> ;
+M: number-hash-set wrap-key
+    drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
 
 M: number-hash-set clone
     underlying>> clone number-hash-set boa ; inline
index 788309bff0131123d6efb223f816226bf69efbb3..a6a4fa3235652db564588df96c174af1fc2edcd6 100644 (file)
@@ -7,6 +7,8 @@ vocabs.loader ;
 
 IN: hashtables.numbers
 
+ERROR: not-a-number object ;
+
 TUPLE: number-wrapper < wrapped-key ;
 
 C: <number-wrapper> number-wrapper
@@ -24,7 +26,8 @@ TUPLE: number-hashtable < wrapped-hashtable ;
 : <number-hashtable> ( n -- shashtable )
     <hashtable> number-hashtable boa ; inline
 
-M: number-hashtable wrap-key drop <number-wrapper> ;
+M: number-hashtable wrap-key
+    drop dup number? [ <number-wrapper> ] [ not-a-number ] if ;
 
 M: number-hashtable clone
     underlying>> clone number-hashtable boa ; inline