"}"
} "\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
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 ]