Don't overwrite pre-registered primitives in _load_primitives

This commit is contained in:
giles
2026-02-02 23:59:38 +00:00
parent d8360e5945
commit 3d5a08a7dc

View File

@@ -189,7 +189,10 @@ class StreamInterpreter:
prim_name = name[5:]
dash_name = prim_name.replace('_', '-')
# Register ONLY with namespace (geometry:ripple-displace)
self.primitives[f"{lib_name}:{dash_name}"] = func
# Don't overwrite if already registered (allows pre-registration of overrides)
key = f"{lib_name}:{dash_name}"
if key not in self.primitives:
self.primitives[key] = func
count += 1
if hasattr(module, 'PRIMITIVES'):
@@ -197,9 +200,12 @@ class StreamInterpreter:
if isinstance(prims, dict):
for name, func in prims.items():
# Register ONLY with namespace
# Don't overwrite if already registered
dash_name = name.replace('_', '-')
self.primitives[f"{lib_name}:{dash_name}"] = func
count += 1
key = f"{lib_name}:{dash_name}"
if key not in self.primitives:
self.primitives[key] = func
count += 1
print(f"Loaded primitives: {lib_name} ({count} functions)", file=sys.stderr)