]> gitweb.factorcode.org Git - factor.git/commitdiff
parse-here doesn't consume an extra line now, and it checks that once a line has...
authorDoug Coleman <doug.coleman@gmail.com>
Sat, 3 Sep 2011 17:17:30 +0000 (12:17 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 3 Sep 2011 17:17:30 +0000 (12:17 -0500)
basis/multiline/multiline-tests.factor
basis/multiline/multiline.factor

index ad624dd917d1b138c6184d2b5017054b2a3f3807..3a4e3dd62ee6039a0fa4d172b6db5979ff8932f5 100644 (file)
@@ -1,4 +1,4 @@
-USING: accessors eval multiline tools.test ;
+USING: accessors eval multiline sequences tools.test ;
 IN: multiline.tests
 
 STRING: test-it
@@ -78,3 +78,24 @@ lolaol ] unit-test
 [ "whoa" ]
 [ DELIMITED: factor blows my mind
 whoafactor blows my mind ] unit-test
+
+<<
+SYNTAX: MULTILINE-LITERAL: parse-here suffix! ;
+>>
+
+[ { "bar" } ]
+[
+    CONSTANT: foo { MULTILINE-LITERAL:
+bar
+;
+} foo
+] unit-test
+
+
+! Make sure parse-here fails if extra crap appears on the first line
+[
+    "CONSTANT: foo { MULTILINE-LITERAL: asdfasfdasdfas
+bar
+;
+}" eval
+] must-fail
index 5182c33e599bba3853324109e8d53a63dfaaf8c5..1b62513abf500206abfcadfa02b00497bcac0a27 100644 (file)
@@ -7,6 +7,10 @@ IN: multiline
 ERROR: bad-heredoc identifier ;
 
 <PRIVATE
+
+: rest-of-line ( -- seq )
+    lexer get [ line-text>> ] [ column>> ] bi tail ;
+
 : next-line-text ( -- str )
     lexer get dup next-line line-text>> ;
 
@@ -16,11 +20,16 @@ ERROR: bad-heredoc identifier ;
         [ drop lexer get next-line ]
         [ % "\n" % (parse-here) ] if
     ] [ ";" unexpected-eof ] if* ;
+
 PRIVATE>
 
+ERROR: text-found-before-eol string ;
+
 : parse-here ( -- str )
-    [ (parse-here) ] "" make but-last
-    lexer get next-line ;
+    [
+        rest-of-line dup [ drop ] [ text-found-before-eol ] if-empty
+        (parse-here)
+    ] "" make but-last ;
 
 SYNTAX: STRING:
     CREATE-WORD
@@ -48,9 +57,6 @@ SYNTAX: STRING:
         change-column drop
     ] "" make ;
 
-: rest-of-line ( -- seq )
-    lexer get [ line-text>> ] [ column>> ] bi tail ;
-
 :: advance-same-line ( text -- )
     lexer get [ text length + ] change-column drop ;