Skip to content

fix: parse a class name even when it has no description - #541

Open
fxp wants to merge 1 commit into
tscircuit:mainfrom
fxp:fix/class-name-without-description
Open

fxp wants to merge 1 commit into
tscircuit:mainfrom
fxp:fix/class-name-without-description

Conversation

@fxp

@fxp fxp commented Aug 12, 2026

Copy link
Copy Markdown

Problem

`processClass` only set `classObj.name` when nodes[1] and nodes[2] were both string atoms, treating nodes[2] as a required "description". But a class with no description — nodes[2] is the first nested list (e.g. `(clearance_class ...)`), not a string — is valid DSN. See the `default` class in `tests/assets/testkicadproject/freeroutingTraceAdded.dsn`:

```
(class default
(clearance_class default)
(via_rule default)
(rule (width 200.0))
)
```

The class's name was silently dropped whenever it had no description, even though name and description are independent fields.

Fix

Set `name` and `description` independently instead of gating both on the same combined check.

Verification

Added `tests/repros/repro22-class-name-without-description.test.ts`. Confirmed it fails without the fix (name `undefined` instead of `"default"`) and passes with it.

Full suite: 56 pass / 1 pre-existing skip / 0 fail.

/claim #54

processClass only set classObj.name when nodes[1] AND nodes[2] were
both string atoms, treating nodes[2] as a required "description".
But a class with no description -- nodes[2] is the first nested list
(e.g. `(clearance_class ...)`), not a string -- is valid DSN, see the
`default` class in
tests/assets/testkicadproject/freeroutingTraceAdded.dsn. The class's
name was silently dropped whenever it had no description, even
though name and description are independent fields.

Added tests/repros/repro22-class-name-without-description.test.ts.
Confirmed it fails without the fix (name undefined instead of
"default") and passes with it.

Full suite: 56 pass / 1 pre-existing skip / 0 fail.

/claim tscircuit#54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant