]> gitweb.factorcode.org Git - factor.git/commitdiff
Tuple parsing didn't handle line breaks properly; if scan returns f, must throw unexp...
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Tue, 4 Nov 2008 03:01:50 +0000 (21:01 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Tue, 4 Nov 2008 03:01:50 +0000 (21:01 -0600)
core/classes/tuple/parser/parser-tests.factor
core/classes/tuple/parser/parser.factor

index 6b9a953ab93a78fb8e003f434c57776d5b7033ac..22b578426914e0d03001212476d32e458c9fad0f 100644 (file)
@@ -109,3 +109,36 @@ TUPLE: parsing-corner-case x ;
         "}"
     } "\n" join eval
 ] unit-test
+
+[ T{ parsing-corner-case f 3 } ] [
+    {
+        "USE: classes.tuple.parser.tests"
+        "T{ parsing-corner-case"
+        "    { x 3 }"
+        "}"
+    } "\n" join eval
+] unit-test
+
+[ T{ parsing-corner-case f 3 } ] [
+    {
+        "USE: classes.tuple.parser.tests"
+        "T{ parsing-corner-case {"
+        "    x 3 }"
+        "}"
+    } "\n" join eval
+] unit-test
+
+
+[
+    {
+        "USE: classes.tuple.parser.tests T{ parsing-corner-case"
+        "    { x 3 }"
+    } "\n" join eval
+] [ error>> unexpected-eof? ] must-fail-with
+
+[
+    {
+        "USE: classes.tuple.parser.tests T{ parsing-corner-case {"
+        "    x 3 }"
+    } "\n" join eval
+] [ error>> unexpected-eof? ] must-fail-with
index 78886356418ebccf899821c0ae58b67512fdd14e..659195edbf3cc99416dfde3917e6de86daaf1b9e 100644 (file)
@@ -60,14 +60,19 @@ ERROR: invalid-slot-name name ;
     dup check-duplicate-slots
     3dup check-slot-shadowing ;
 
-: parse-slot-value ( -- )
-    scan scan-object 2array , scan "}" assert= ;
-
 ERROR: bad-literal-tuple ;
 
+: parse-slot-value ( -- )
+    scan scan-object 2array , scan {
+        { f [ unexpected-eof ] }
+        { "}" [ ] }
+        [ bad-literal-tuple ]
+    } case ;
+
 : (parse-slot-values) ( -- )
     parse-slot-value
     scan {
+        { f [ unexpected-eof ] }
         { "{" [ (parse-slot-values) ] }
         { "}" [ ] }
         [ bad-literal-tuple ]