« get me outta code hell

yaml, find-reverse: don't double-count inherited specs - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/yaml.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-02-22 11:26:27 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-02-22 13:16:45 -0400
commit929e8500667012b2b2f5506efbfd10a39134a9cd (patch)
treeb1e9c86bf61d657ffd37e0d665eb54574ce9fdab /src/data/yaml.js
parent475824fb75deadd96be3e815dca5078aca83b2ac (diff)
yaml, find-reverse: don't double-count inherited specs
Diffstat (limited to 'src/data/yaml.js')
-rw-r--r--src/data/yaml.js7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/data/yaml.js b/src/data/yaml.js
index ee65eb7f..69069d66 100644
--- a/src/data/yaml.js
+++ b/src/data/yaml.js
@@ -695,10 +695,17 @@ export function getAllDataSteps() {
 
   const steps = [];
 
+  const seenLoadingFns = new Set();
+
   for (const thingConstructor of Object.values(thingConstructors)) {
     const getSpecFn = thingConstructor[Thing.getYamlLoadingSpec];
     if (!getSpecFn) continue;
 
+    // Subclasses can expose literally the same static properties
+    // by inheritence. We don't want to double-count those!
+    if (seenLoadingFns.has(getSpecFn)) continue;
+    seenLoadingFns.add(getSpecFn);
+
     steps.push(getSpecFn({
       documentModes,
       thingConstructors,