Skip to content

finding(docs): content/docs/fields/location.mdx welds a JSX element and a bare metadata object literal into one fence, so it parses as neither ts nor tsx #6127

Description

@yinlianghui-tw

Filed by #5867batch 3, unassigned. Excluded from batch 3 by measurement. Blocks 2 of the 129 blocks remaining on #5867.

The measurement

The block at fence line 81, under Integration with Maps, passes triage's classifier — its first line is import { LocationField } from '@object-ui/fields'; — so under the #5867 ruling it is code. But it does not parse under either TypeScript fence language. Both legs measured with the repo's own typescript, parsing the block body standalone:

TS: 2 syntactic diagnostic(s)
line 4: TS1005 '>' expected.
line 4: TS1109 Expression expected.
TSX: 5 syntactic diagnostic(s)
line 10: TS1005 ';' expected.
line 11: TS1005 ';' expected.
line 13: TS1005 ';' expected.
line 14: TS1005 ';' expected.
line 17: TS1005 ';' expected.

The gate agrees — re-fenced to ts in the batch-3 probe it was the only syntax-phase failure in the 23-block fields candidate set:

[syntax] content/docs/fields/location.mdx:91:13 TS1005: ';' expected.
[syntax] content/docs/fields/location.mdx:92:6 TS1005: ';' expected.
[syntax] content/docs/fields/location.mdx:94:15 TS1005: ';' expected.
[syntax] content/docs/fields/location.mdx:95:9 TS1005: ';' expected.
[syntax] content/docs/fields/location.mdx:98:11 TS1005: ';' expected.

Why neither language works

The fence holds two different examples welded together:

  1. an import plus a JSX usage — LocationField {...props} as an element, which needs tsx; under ts the less-than is read as a type argument list, which is the line-4 pair above;
  2. immediately after it, a bare metadata object literal ({ type: 'object-map', objectName: 'store', map: { … } }) written at statement position, which under tsx parses as a block containing a labelled statement and then falls over on the commas — the five line-10-onward diagnostics.

So the block is not one snippet in the wrong language. It is a JSX usage example and a JSON metadata example sharing a fence.

Options

Recommendation: A. It is the only option that puts the half a reader would actually copy-paste as TypeScript under the type gate, and the metadata half is a schema-key question the snippet gate explicitly says it does not answer (see the check-doc-snippet-types.mjs header, "Schema-key validity").

⚠️ Note for whoever takes it: splitting one fence into two changes the block count, so the batch that does this cannot assert the plain "blocks-to-compile rises by exactly the batch size" identity without stating the split separately.

⛔ Not fixable inside #5867's batch discipline: choosing between A, B and C is a decision about what the page should teach, and a FRAGMENT_MARKER is forbidden on a block that is genuinely TypeScript.

Refs: #5867 (parent) · #6126 (the sibling fields exclusions) · #6120 · #6122.

Metadata

Metadata

Labels

documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions