diff --git a/lib/components/base-components/PrimitiveComponent.ts b/lib/components/base-components/PrimitiveComponent.ts index 17ea9008..39e60558 100644 --- a/lib/components/base-components/PrimitiveComponent.ts +++ b/lib/components/base-components/PrimitiveComponent.ts @@ -466,6 +466,11 @@ export abstract class PrimitiveComponent< } add(component: PrimitiveComponent) { + if (!component.onAddToParent) { + throw new Error( + `Invalid JSX Element: Expected a React component but received "${JSON.stringify(component)}"`, + ) + } component.onAddToParent(this) component.parent = this this.children.push(component) diff --git a/tests/components/primitive-components/invalid-jsx.test.tsx b/tests/components/primitive-components/invalid-jsx.test.tsx new file mode 100644 index 00000000..53475200 --- /dev/null +++ b/tests/components/primitive-components/invalid-jsx.test.tsx @@ -0,0 +1,14 @@ +import { test, expect } from "bun:test" +import { Circuit } from "lib" + +test("snippet-import1-contribution-board", async () => { + const circuit = new Circuit() + + expect(() => { + circuit.add( + + {1} + , + ) + }).toThrowError("Invalid JSX Element") +})