]> gitweb.factorcode.org Git - factor.git/commitdiff
syntax: make it so PRIMITIVE: verifies primitives
authorJoe Groff <arcata@gmail.com>
Mon, 31 Oct 2011 06:05:31 +0000 (23:05 -0700)
committerJoe Groff <arcata@gmail.com>
Wed, 2 Nov 2011 20:23:09 +0000 (13:23 -0700)
It's a bit strange for disparate vocabs to reference words that get created out of thin air during bootstrap, so this lets there be some trace in the seeded vocab source that there was a word created there.

core/syntax/syntax.factor

index 803287a89d7481e970bbc09a9eeabe48e7948de7..cd90ea0b922a8562e511a37362aef8caac1c3c7b 100644 (file)
@@ -8,7 +8,7 @@ generic.standard generic.hook generic.math generic.parser classes
 io.pathnames vocabs vocabs.parser classes.parser classes.union
 classes.intersection classes.mixin classes.predicate
 classes.singleton classes.tuple.parser compiler.units
-combinators effects.parser slots hash-sets source-files ;
+combinators effects effects.parser slots hash-sets source-files ;
 IN: bootstrap.syntax
 
 ! These words are defined as a top-level form, instead of with
@@ -26,11 +26,15 @@ IN: bootstrap.syntax
     [ dup "syntax" lookup [ ] [ no-word-error ] ?if ] dip
     define-syntax ;
 
+: verify-primitive ( word vocab effect -- )
+    [ lookup ] dip [ swap stack-effect effect= ] curry [ f ] if*
+    [ "Primitive definition is not correct" throw ] unless ;
+
 [
     { "]" "}" ";" ">>" } [ define-delimiter ] each
 
     "PRIMITIVE:" [
-        "Primitive definition is not supported" throw
+        scan-token current-vocab scan-object verify-primitive
     ] define-core-syntax
 
     "CS{" [