End-to-end compile of FederatedMeetup.speckdl surfaced a real generator input bug: inline line comments on field declarations were bleeding into the parsed type expression. A field like mesh_ip: Bytes // 4 bytes (IPv4 overlay) produced a TypeExpr whose name was literally 'Bytes // 4 bytes (IPv4 overlay)' which the .proto generator emitted verbatim: bytes // 4 bytes (IPv4 overlay) mesh_ip = 2; — broken syntax (comment in the type position). Fix: both parseEventBlockMultiline and parseInterfaceBlockMultiline now strip '// ...' suffixes from each inner line BEFORE matching the 'name: type' regex or splitting on commas. The state-block parser already had this; cycle 62 brings event and interface to parity. Tests: 2 new parser tests covering event and interface blocks, both with the FederatedMeetup-style inline comment. All 54 tests pass (52 baseline + 2 new). tsc build clean. End-to-end verified: running generateProtobuf against the real FederatedMeetup.speckdl now emits clean 'bytes mesh_ip = 2;' for the InitialMeshPeer interface, where cycle 62's pre-fix output was the broken 'Bytes // 4 bytes (IPv4 overlay) mesh_ip = 2;'. This unblocks the next phase of the federated-meetup Speckl migration: the consumer Go code can now bind to the generated proto without a half-broken field in the way. |
||
|---|---|---|
| .. | ||
| __tests__ | ||
| dist | ||
| node_modules | ||
| out/speckl-compile | ||
| specs | ||
| src | ||
| test-output | ||
| test-output-rust/TigerBeetleLedger | ||
| .gitignore | ||
| .last-build | ||
| check-dist.sh | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.json | ||