From 925be9e90f877db6e192c4f223a3dfd8807b0c32 Mon Sep 17 00:00:00 2001 From: Arnav K Date: Mon, 10 Feb 2025 03:31:38 +0530 Subject: [PATCH] patch: improve error message (#609) * improve error message that occurs when you put something that is not a react component inside the jsx * add test * Update PrimitiveComponent.ts --- .../base-components/PrimitiveComponent.ts | 5 +++++ .../primitive-components/invalid-jsx.test.tsx | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/components/primitive-components/invalid-jsx.test.tsx 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") +})