Follow-ups to the v1.0.6 utility-as-Callable hotfix (#92), cut from v1.0.6 plus these fixes only — the unreleased Phase 2 work on main stays unreleased.
Fixed
- Bare Variant utilities resolve to a constant
Callableunder any native-API state, including an empty database (#92). The v1.0.6 arm gated Variant utilities on the ingestedextension_api.jsontable, so when no dump was available (embedded fallback disabled, or a decompress failure) bareprint/floorstill fell through toIdentifier "X" not declared in the current scope.. Resolution now mirrors Godot's compile-timeVariant::has_utility_functionthrough a database-independent registry of the 114 Variant utilities, so the fix holds regardless of how — or whether — the native API was loaded. - Duplicate same-utility dictionary keys are now reported (#92):
{print: 1, print: 2}emits Godot'sKey "@GlobalScope::print" was already used in this dictionary (at line N).(and@GDScript::lenfor the GDScript-only family), matching the engine; previously the duplicate folded to an opaque value and went unreported. Distinct keys and non-utility constants are unaffected.
Changed
- The constant-
Callabletype is now built by a singlemake_callable_typehelper mirroring Godot'sgdscript_analyzer.cpp, replacing eight inline copies (#92) — groundwork for the Phase 2 signatureHelpMethodInfowiring. No behavior change.
Both conformance ratchets hold at 1.0, a new ingest guard pins the full 114-name Variant utility set, and the duplicate-key messages are oracle-verified against godot 4.6.3-stable. The full-project diagnostics sweep on both acceptance projects (a public OSS project and a ~2,300-script production project) is byte-identical to v1.0.6.
Install
Download the binary for your platform, verify it against SHA256SUMS, and point your editor's GDScript LSP at it. Both binaries report gdls 1.0.7.