From 03dac55f90bd6b842ffe90b6bfa98af5c0897513 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 16 Jan 2019 10:46:34 -0800 Subject: Dump Hash ivars before elements When the Hash is revived, the ivars will be set before elements. This is for the case when the hash setter depends on ivars set on the hash. --- ext/psych/lib/psych/visitors/yaml_tree.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb index 62d1d5c3f4..79ca129b83 100644 --- a/ext/psych/lib/psych/visitors/yaml_tree.rb +++ b/ext/psych/lib/psych/visitors/yaml_tree.rb @@ -428,15 +428,6 @@ module Psych node = @emitter.start_mapping(nil, tag, false, Psych::Nodes::Mapping::BLOCK) register(o, node) - # Dump the elements - accept 'elements' - @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK - o.each do |k,v| - accept k - accept v - end - @emitter.end_mapping - # Dump the ivars accept 'ivars' @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK @@ -446,6 +437,15 @@ module Psych end @emitter.end_mapping + # Dump the elements + accept 'elements' + @emitter.start_mapping nil, nil, true, Nodes::Mapping::BLOCK + o.each do |k,v| + accept k + accept v + end + @emitter.end_mapping + @emitter.end_mapping else tag = "!ruby/hash:#{o.class}" -- cgit v1.2.3