diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 756c85010..05ddf2334 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -19,12 +19,6 @@ } } }, - "ChildNode": { - "extends": "Node" - }, - "ParentNode": { - "extends": "Node" - }, "Animatable": { "methods": { "method": { diff --git a/inputfiles/patches/child-parent-node.kdl b/inputfiles/patches/child-parent-node.kdl new file mode 100644 index 000000000..63bf8de68 --- /dev/null +++ b/inputfiles/patches/child-parent-node.kdl @@ -0,0 +1,3 @@ +// ChildNode and ParentNode are actually defined as mixins, but because of their names they have historically been used as a sub-interface of Node. +interface-mixin ChildNode extends=Node +interface-mixin ParentNode extends=Node diff --git a/src/build/patches.ts b/src/build/patches.ts index 50a105a95..de5cee7f4 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -92,11 +92,15 @@ function handleMixin(node: Node): DeepPartial { } } - return { + const result = { name, events: { event }, properties: { property }, } as DeepPartial; + if (node.properties.extends) { + result.extends = node.properties.extends as string; + } + return result; } /**