Hi Peter,
The reason this does not fail is because (1) STON is a stream parser that accepts possibly multiple top-level expression from one stream (2) your input is basically valid and complete until the closing curly brace.
> On 05 Jul 2015, at 14:36, Peter Uhn��k <i.uhnak@gmail.com> wrote:
>
> How come this passes?
>
> STON fromString: '{
>�� �� �� ��"a": "b"
> }wtf",
>�� �� �� ��"x": "y"
> '.
>
> The result is dictionary "a" -> "b".
>
> I would expect for it to die on parse error.
>
> Peter
You could enforce the fact that the whole input should be consumed yourself.
| input reader result |
input := '{
�� �� �� �� "a": "b"
}wtf",
�� �� �� �� "x": "y"
' readStream.
reader := STON reader on: input.
result := reader next.
reader consumeWhitespace.
self assert: reader atEnd.
result
Sven