diff --git a/extra/yaml/yaml-tests.factor b/extra/yaml/yaml-tests.factor index 64dd88ed6c..fe493fbd43 100644 --- a/extra/yaml/yaml-tests.factor +++ b/extra/yaml/yaml-tests.factor @@ -563,3 +563,10 @@ ${ construct-value-obj } [ $ construct-value-obj >yaml-docs yaml-docs> ] unit-te [ "- foo\n:)" yaml> ] [ libyaml-parser-error? ] must-fail-with [ "- &foo 1\n- *baz\n" yaml> ] [ yaml-undefined-anchor? ] must-fail-with [ "" yaml> ] [ yaml-no-document? ] must-fail-with + + +! !!!!!!!!!!!!!!! +! misc + +! Don't use aliases/anchors for equal fixnums +{ f } [ CHAR: & { 0 0 } >yaml member? ] unit-test diff --git a/extra/yaml/yaml.factor b/extra/yaml/yaml.factor index 4831fb9a0a..f9914113c5 100644 --- a/extra/yaml/yaml.factor +++ b/extra/yaml/yaml.factor @@ -268,7 +268,7 @@ GENERIC: (replace-aliases) ( yaml-anchors obj -- obj' ) [ next-anchor<< ] bi* ] bi ; -:: ?replace-aliases ( yaml-anchors obj -- obj' ) +:: (?replace-aliases) ( yaml-anchors obj -- obj' ) yaml-anchors objects>> :> objects obj objects at* [ [ yaml-anchors incr-anchor dup obj objects set-at ] unless* @@ -280,6 +280,9 @@ GENERIC: (replace-aliases) ( yaml-anchors obj -- obj' ) obj' ] if ; +: ?replace-aliases ( yaml-anchors obj -- obj' ) + dup fixnum? [ nip ] [ (?replace-aliases) ] if ; + M: object (replace-aliases) nip ; M: byte-array (replace-aliases) nip ;