@@ -18,7 +18,7 @@ def validate(instance, instance_location, keyword_location, context)
18
18
unevaluated_items = instance . size . times . to_set
19
19
20
20
context . adjacent_results . each_value do |adjacent_result |
21
- collect_unevaluated_items ( adjacent_result , instance_location , unevaluated_items )
21
+ collect_unevaluated_items ( adjacent_result , unevaluated_items )
22
22
end
23
23
24
24
nested = unevaluated_items . map do |index |
@@ -30,8 +30,7 @@ def validate(instance, instance_location, keyword_location, context)
30
30
31
31
private
32
32
33
- def collect_unevaluated_items ( result , instance_location , unevaluated_items )
34
- return unless result . valid && result . instance_location == instance_location
33
+ def collect_unevaluated_items ( result , unevaluated_items )
35
34
case result . source
36
35
when Applicator ::PrefixItems
37
36
unevaluated_items . subtract ( 0 ..result . annotation )
@@ -41,7 +40,9 @@ def collect_unevaluated_items(result, instance_location, unevaluated_items)
41
40
unevaluated_items . subtract ( result . annotation )
42
41
end
43
42
result . nested &.each do |subresult |
44
- collect_unevaluated_items ( subresult , instance_location , unevaluated_items )
43
+ if subresult . valid && subresult . instance_location == result . instance_location
44
+ collect_unevaluated_items ( subresult , unevaluated_items )
45
+ end
45
46
end
46
47
end
47
48
end
@@ -61,7 +62,7 @@ def validate(instance, instance_location, keyword_location, context)
61
62
evaluated_keys = Set [ ]
62
63
63
64
context . adjacent_results . each_value do |adjacent_result |
64
- collect_evaluated_keys ( adjacent_result , instance_location , evaluated_keys )
65
+ collect_evaluated_keys ( adjacent_result , evaluated_keys )
65
66
end
66
67
67
68
evaluated = instance . reject do |key , _value |
@@ -77,14 +78,15 @@ def validate(instance, instance_location, keyword_location, context)
77
78
78
79
private
79
80
80
- def collect_evaluated_keys ( result , instance_location , evaluated_keys )
81
- return unless result . valid && result . instance_location == instance_location
81
+ def collect_evaluated_keys ( result , evaluated_keys )
82
82
case result . source
83
83
when Applicator ::Properties , Applicator ::PatternProperties , Applicator ::AdditionalProperties , UnevaluatedProperties
84
84
evaluated_keys . merge ( result . annotation )
85
85
end
86
86
result . nested &.each do |subresult |
87
- collect_evaluated_keys ( subresult , instance_location , evaluated_keys )
87
+ if subresult . valid && subresult . instance_location == result . instance_location
88
+ collect_evaluated_keys ( subresult , evaluated_keys )
89
+ end
88
90
end
89
91
end
90
92
end
0 commit comments