chore(strucpp): pin v0.6.6 - #1075
Conversation
Picks up the two language-server resolution fixes released in v0.6.6 (STruCpp #230, RTOP-247 and RTOP-248): - A STRUCT field named after a global symbol no longer resolves to that symbol. It affected hover, go-to-definition, find-all-references and a server type query, and most seriously rename — renaming such a field rewrote the colliding FUNCTION BLOCK and every reference to it. - Member access past an array subscript resolves, so `myArray[i].` completes the element type's fields instead of offering the generic keyword and global list. Covers inline arrays, named array TYPEs, multi-dimensional arrays, arrays reached through a struct field, aliases naming an array type, and `ARRAY [*]`. `scripts/download-binaries.ts` derives the asset name from this field and resolves it to `strucpp-0.6.6.tgz`. Verified: the URL returns HTTP 200, a forced install pins 0.6.6, and the published bundle carries the fixes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011JAMx8mRf2ig4YFfs2gmsM
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. WalkthroughThe Changesstrucpp version update
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to This change updates the bundled STruC++ compiler from v0.6.5 to v0.6.6 without changing repository integration paths or behavior beyond the upstream fixes; no actionable merge-blocking risk remains. Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Description checkExplanation The description clearly explains the version change, affected upstream fixes, risk, scope, and verification results. It does not reproduce the template headings or DOD checklist, but it provides the required change and validation information in sufficient detail. Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Bumps the pinned STruC++ compiler from v0.6.5 to v0.6.6 in
binary-versions.json.scripts/download-binaries.tsderives the asset name from this field and resolves it tostrucpp-0.6.6.tgz. Verified before opening: the download URL returns HTTP 200, a forced install under Node 22 pins0.6.6, and the published bundle carries the fixes below. No other change is needed — the script derives the asset name from this field, andelectron-builder.jsonreferences the extractedstrucpp/runtime/includeandstrucpp/libspaths, which are version-agnostic.What v0.6.6 brings
A single upstream PR, STruCpp #230 — two language-server resolution defects, RTOP-247 and RTOP-248. Compiler, codegen and the debug table are untouched; this is the LSP only.
A STRUCT field resolved against the global scope. Inside
TYPE ... END_TYPEthere is no enclosing POU, so the lookup scope wasglobalScopeand a field name matched whatever global happened to share it. Five surfaces in this repo consumed that:IsWrappedTypeRequestThe rename case is data loss rather than a cosmetic slip, and it is the reason this bump is worth taking promptly. It is also not function-block-only — any global symbol kind collided, so a field named after a FUNCTION behaved identically.
Member access past an array subscript.
myArray[i].offered the generic body-completion list — keywords plus every global and library symbol — instead of the element type's members. Now covered: inline arrays, named array TYPEs, multi-dimensional arrays, an array reached through a struct field, a TYPE alias naming an array type,ARRAY [*], a dot inside the index expression (arr[s.k].) and a subscripted index (arr[idx[i]].).Deliberately unchanged upstream: hover and go-to-definition past a subscript still resolve to the base variable. They do the same for a plain non-array struct, so that is the existing behaviour of those surfaces rather than an array defect.
Risk
Low for this repo. The
.dtdata type code view (DOPE-385/537) is the surface where the struct-field defect was found, so that path is the one worth a look during review — the change makes hover and Ctrl+click on a colliding field answer nothing where they previously answered wrongly.Verification
Upstream: full compiler suite 2322 passed / 7 skipped, extension suite 282 passed, both
tscclean, all six CI checks green on the release PR (STruCpp #231), including a clean-checkout Extension Build & Test and the packaged Binary Smoke Test.Both defects were also validated by hand in this editor against a purpose-built project covering every array shape and a struct whose fields are named after a FUNCTION_BLOCK and a FUNCTION.
Mirror of https://github.com/Autonomy-Logic/openplc-web/pull/725
🤖 Generated with Claude Code
https://claude.ai/code/session_011JAMx8mRf2ig4YFfs2gmsM
Summary by CodeRabbit
strucppbinary to versionv0.6.6.