From 76eb2435f2198cd371a3d76f475c6fa09c14c532 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Mon, 28 Sep 2026 10:59:40 -0400 Subject: [PATCH] Stop Architectural Data from allowing a Signal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Simulink.Signal is design data. Architectural Data models interfaces, and its bus and connection-bus entries are the interface types; nothing in the product supported adding a signal there. Neither arch fixture holds one. allowsType gates add and paste only — it is never consulted while parsing — so a dictionary that already contains a derived signal still loads and still displays. archPresentation keeps that case pinned, driven from metadata now that the section can no longer produce it. Four tests in sectionNode used an arch Simulink.Signal incidentally, as a vehicle for testing derived stamping, cross-section unique naming and execRemoveEntry. They now use Simulink.Bus, which arch does model. --- .../node/container/SectionNode.d.ts.map | 2 +- dist/datamodel/node/container/SectionNode.js | 3 ++- .../datamodel/node/container/SectionNode.js.map | 2 +- src/datamodel/node/container/SectionNode.ts | 3 ++- test/archPresentation.test.ts | 17 +++++++++++++---- test/sectionNode.test.ts | 17 +++++++++++++---- 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/dist/datamodel/node/container/SectionNode.d.ts.map b/dist/datamodel/node/container/SectionNode.d.ts.map index 0a9cf45..2b03e88 100644 --- a/dist/datamodel/node/container/SectionNode.d.ts.map +++ b/dist/datamodel/node/container/SectionNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SectionNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AAwCrE,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,iBAAiB,IAAI,iBAAiB,CAKzC;IAED,eAAe,IAAI,MAAM,EAAE;IAQ3B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUtC,oBAAoB,IAAI,MAAM,EAAE;IA4BhC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA6BhE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiBlH,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiB9E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAerC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,QAAQ;CA+BvG"} \ No newline at end of file +{"version":3,"file":"SectionNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AAyCrE,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,iBAAiB,IAAI,iBAAiB,CAKzC;IAED,eAAe,IAAI,MAAM,EAAE;IAQ3B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUtC,oBAAoB,IAAI,MAAM,EAAE;IA4BhC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA6BhE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiBlH,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiB9E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAerC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,QAAQ;CA+BvG"} \ No newline at end of file diff --git a/dist/datamodel/node/container/SectionNode.js b/dist/datamodel/node/container/SectionNode.js index 2f49fc5..641c2fd 100644 --- a/dist/datamodel/node/container/SectionNode.js +++ b/dist/datamodel/node/container/SectionNode.js @@ -31,7 +31,8 @@ const ALLOWED_TYPES = { ], arch: [ 'Constant', - 'Simulink.Signal', + // No Simulink.Signal: a signal is design data. Architectural data models + // interfaces, and its bus/connection-bus entries are the interface types. 'Simulink.Bus', 'Simulink.ConnectionBus', 'Simulink.ServiceBus', diff --git a/dist/datamodel/node/container/SectionNode.js.map b/dist/datamodel/node/container/SectionNode.js.map index 906d338..643ce9c 100644 --- a/dist/datamodel/node/container/SectionNode.js.map +++ b/dist/datamodel/node/container/SectionNode.js.map @@ -1 +1 @@ -{"version":3,"file":"SectionNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SectionNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/container/SectionNode.ts b/src/datamodel/node/container/SectionNode.ts index acbbbd8..d2189cb 100644 --- a/src/datamodel/node/container/SectionNode.ts +++ b/src/datamodel/node/container/SectionNode.ts @@ -41,7 +41,8 @@ const ALLOWED_TYPES: Record = { ], arch: [ 'Constant', - 'Simulink.Signal', + // No Simulink.Signal: a signal is design data. Architectural data models + // interfaces, and its bus/connection-bus entries are the interface types. 'Simulink.Bus', 'Simulink.ConnectionBus', 'Simulink.ServiceBus', diff --git a/test/archPresentation.test.ts b/test/archPresentation.test.ts index 777545e..de22870 100644 --- a/test/archPresentation.test.ts +++ b/test/archPresentation.test.ts @@ -114,7 +114,7 @@ describe('ValueType defaultName and isDerived icon', () => { // into Design Data and into Architectural Data is byte-identical on disk apart from // `isderived`, so the icon is the ONLY thing in the tree that says which section an // entry belongs to. A class whose ternary collapsed to one glyph would make an arch -// entry indistinguishable from a design one, and these four are the classes both +// entry indistinguishable from a design one, and these three are the classes both // sections admit (see ALLOWED_TYPES), so they are exactly the ones it can happen to. describe('Design Data and Architectural Data icons for the classes both sections admit', () => { const CASES: [string, string, string][] = [ @@ -122,9 +122,6 @@ describe('Design Data and Architectural Data icons for the classes both sections ['Simulink.NumericType', 'wsNumeric', 'typeNumeric'], ['Simulink.AliasType', 'wsAlias', 'typeAlias'], ['Simulink.ValueType', 'wsValue', 'typeSignalUI'], - // A derived Signal shares the serviceInterfaces glyph with a derived - // Simulink.ServiceBus; what matters here is that it is NOT the wsSignal one. - ['Simulink.Signal', 'wsSignal', 'serviceInterfaces'], ]; it('gives each class a different glyph in each section', () => { @@ -141,6 +138,18 @@ describe('Design Data and Architectural Data icons for the classes both sections } }); + it('still gives a derived Signal the arch glyph, which only parsing can reach now', () => { + // Architectural Data no longer ADMITS Simulink.Signal, so addEntry and paste + // cannot produce one and this case cannot be driven from the section the way + // the three above are. Parsing is unaffected by allowsType, so a dictionary + // that already holds an arch signal still loads — and still needs the glyph + // that says so, rather than looking like design data. + const node = SignalNode.parse(rawVal('Simulink.Signal', {}), 'sig', null); + expect(node.icon).toBe('wsSignal'); + node.metadata = { isderived: '1' }; + expect(node.icon).toBe('serviceInterfaces'); + }); + it('follows the entry when it is moved between the two sections', () => { // Paste and drag between Design and Architectural Data rebind `isderived` and // re-read the entry, so the icon has to be derived from the metadata every time it diff --git a/test/sectionNode.test.ts b/test/sectionNode.test.ts index 3cd21c9..6c370f0 100644 --- a/test/sectionNode.test.ts +++ b/test/sectionNode.test.ts @@ -98,6 +98,15 @@ describe('allowsType / getAllowedTypes', () => { expect(sectionOf(root, 'arch').allowsType(cls), cls).toBe(true); } }); + + it('keeps a Signal out of Architectural Data', () => { + // A signal is design data; architectural data models interfaces, and its + // bus and connection-bus entries are the interface types. Neither arch + // fixture holds a Simulink.Signal. + const root = sldd(); + expect(sectionOf(root, 'design').allowsType('Simulink.Signal')).toBe(true); + expect(sectionOf(root, 'arch').allowsType('Simulink.Signal')).toBe(false); + }); }); describe('addEntry', () => { @@ -120,7 +129,7 @@ describe('addEntry', () => { it('marks an arch entry derived, which is the whole Design/Arch distinction', () => { // On disk an arch entry is byte-identical to a design one apart from // isderived; getSectionKey reads it back to choose the section. - const node = sectionOf(sldd(), 'arch').addEntry('Simulink.Signal', 'sig')!; + const node = sectionOf(sldd(), 'arch').addEntry('Simulink.Bus', 'iface')!; expect(node.metadata!.namespace).toBe(NS_DESIGN); expect(node.metadata!.isderived).toBe('1'); expect(node.isDerived).toBe(true); @@ -225,7 +234,7 @@ describe('_uniqueName and the shared Design/Arch namespace', () => { // Design and Arch share NS_DESIGN, so this is the collision that would // otherwise write a dictionary MATLAB refuses to load. const root = sldd(); - sectionOf(root, 'arch').addEntry('Simulink.Signal', 'shared'); + sectionOf(root, 'arch').addEntry('Simulink.Bus', 'shared'); expect(sectionOf(root, 'design')._uniqueName('shared')).toBe('shared1'); expect(sectionOf(root, 'design').addEntry('Simulink.Signal', 'shared')!.name).toBe('shared1'); // ...and symmetrically: arch now sees design's 'shared1' too. @@ -274,7 +283,7 @@ describe('_uniqueName and the shared Design/Arch namespace', () => { it('reports every name across both namespace sections', () => { const root = sldd(); sectionOf(root, 'design').addEntry('Simulink.Parameter', 'a'); - sectionOf(root, 'arch').addEntry('Simulink.Signal', 'b'); + sectionOf(root, 'arch').addEntry('Simulink.Bus', 'b'); sectionOf(root, 'config').addEntry('Simulink.ConfigSet', 'c'); expect(sectionOf(root, 'design')._namespaceEntryNames().sort()).toEqual(['a', 'b']); expect(sectionOf(root, 'config')._namespaceEntryNames()).toEqual(['c']); @@ -365,7 +374,7 @@ describe('execRemoveEntry — undo/redo', () => { // would re-add it on the next Ctrl+Z. const root = sldd(); const design = sectionOf(root, 'design'); - const stranger = sectionOf(root, 'arch').addEntry('Simulink.Signal', 'sig')!; + const stranger = sectionOf(root, 'arch').addEntry('Simulink.Bus', 'iface')!; expect(design.execRemoveEntry(stranger)).toBeNull(); expect(sectionOf(root, 'arch').children).toContain(stranger); });