Merge pull request #13892 from Snuffleupagus/Dict-merge-refactor-2

Move some validation, in `Dict.merge`, used during merging of sub-dictionaries (PR 13775 follow-up)
This commit is contained in:
Tim van der Meij 2021-08-14 12:26:19 +02:00 committed by GitHub
commit e9146b19e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -197,8 +197,11 @@ class Dict {
if (property === undefined) {
property = [];
properties.set(key, property);
} else if (!mergeSubDicts) {
continue; // Ignore additional entries for a "shallow" merge.
} else if (!mergeSubDicts || !(value instanceof Dict)) {
// Ignore additional entries, if either:
// - This is a "shallow" merge, where only the first element matters.
// - The value is *not* a `Dict`, since other types cannot be merged.
continue;
}
property.push(value);
}
@ -211,9 +214,6 @@ class Dict {
const subDict = new Dict(xref);
for (const dict of values) {
if (!(dict instanceof Dict)) {
continue;
}
for (const [key, value] of Object.entries(dict._map)) {
if (subDict._map[key] === undefined) {
subDict._map[key] = value;