Releases: cqframework/cql-language-server
Releases · cqframework/cql-language-server
Release list
CQL Language Server 4.10.0
CQL Language Server 4.9.0
What's Changed
- bump version to 4.9.0-SNAPSHOT by @raleigh-g-thompson in #143
- Release/4.9.0 by @raleigh-g-thompson in #145
Full Changelog: v4.8.0...v4.9.0
CQL Language Server 4.8.0
PR Summary: release/4.8.0 — cql-language-server
| Base | master (88c3a6c) |
| HEAD | release/4.8.0 (6d8ba92) |
| Commits | 52 (all by raleigh-g-thompson) |
| Files changed | 71 files (+14,627 / −478) |
Version
- Bumped to
4.8.0; upstream CQL engine updated to4.9.0; Mockito upgraded to5.14.2.
CQL Debugging (DAP)
This release adds full Debug Adapter Protocol support for CQL — the largest single feature added to the language server.
CqlDebugServer— streaming debug server implementing DAP with thread-safe session management.StreamingBreakpointHandler— validates, registers, and manages breakpoints across primary and included libraries.BreakpointManager— resolves breakpoint positions to ELM locations, handles toggling.EvaluateHelper— evaluates CQL expressions within the debug context (hover, watch, REPL).RuntimeValueRegistry— unified runtime value tracking with CQL type annotations and test case scope.VariableResolver— resolves FHIR profile variables with structured display formatting, profile children, and nested property expansion.DebugSession— manage debug sessions with call stack, multi-frame stack traces, and session lifecycle.CqlStepPositionCollector— ANTLR-based collector for mapping ELM step positions back to source locations for stepping.DebugModel— DAP protocol models for CQL debugger intents.DebugCommandContribution— registers debug-related LSP commands.
Debugging capabilities include:
- Step-through CQL execution (AST-walking, into/over/out).
- Breakpoints in primary and included libraries; validated on set.
- Debug hover — evaluate expressions at breakpoints via
EvaluateHelper. - Structured variable display — FHIR resources shown with profile-specific children; library parameters shown with type annotations.
- Call stack — multi-frame stack trace with define names.
- Session shutdown — graceful cleanup of debug sessions.
ELM AST View
ElmAstLibraryWriter— serializes compiled ELM to a human-readable AST format, including return types and retrieve filter details.- Integration with
ViewElmCommandContributionfor displaying AST in the editor.
Version Info
GetVersionInfoCommandContributionandVersionReader— exposes language server version via LSP command; writesversions.propertiesat build time.
Cross-Platform / Reliability
- Fixed Windows path handling in debugger (included library resolution, breakpoint file paths, test file paths).
- Added timestamps to server-side log output (
logback.xml). FileContentServiceimprovements for cross-platform file resolution.DefinitionTrackBackVisitor— minor fixes for ELM position mapping.
CI / Tooling
- Consolidated CI workflows (
ci.ymlreplacescheck-pr.yaml,spotless.yaml). - Codecov integration with cache-busting and reporting settings.
- Removed
mock-maker-inline— Mockito inline mock maker no longer needed. - Ported
TestCompile.java->TestCompile.kt(Kotlin migration).
Test Coverage
New test classes:
StreamingCqlDebugServerTest(~3,165 lines) — comprehensive end-to-end debug server tests.StreamingBreakpointHandlerTest(~1,050 lines).CqlDebugServerHelperTest(~825 lines).EvaluateHelperTest(~590 lines).VariableResolverTest(~535 lines).ElmAstLibraryWriterTest(~495 lines).CqlStepPositionCollectorTest(~380 lines).BreakpointManagerTest(~340 lines).RuntimeValueRegistryTest(~180 lines).DebugSessionTest,DocumentSymbolProviderTest,GetVersionInfoCommandContributionTest,ExecuteCqlRequestTest,ExecuteCqlCommandContributionTest,DelegatingRepositoryTest,NoOpRepositoryTest,VersionReaderTest, plus new CQL test fixtures.
Existing tests expanded: CqlEvaluatorTest, CqlDebugServerTest, DebugCommandContributionTest, ViewElmCommandContributionTest, FileContentServiceTest.
Code Quality
- Code reformatted with
ktfmt(spotless apply). - Refactored
CqlDebugServerfor testability (DI-basedStreamingBreakpointHandler). - Refactored
CqlEvaluator/CqlTextDocumentServicefor improved command structure.
Commit Log
| Commit | Description |
|---|---|
6d8ba92 |
fix issue with windows path in test |
6d98409 |
fix issue with debugger opening included libraries and breakpoints during a debug session on windows |
6e49d6c |
address gaps in view elm file handling |
8c6d7ef |
add more test coverage |
7b950b5 |
change StreamingBreakpointHandler to use DI |
34e0c52 |
add integration tests |
c97097f |
add library name to ExpressionRef AST output |
fbccb4d |
add debug step tests |
19821b6 |
add more unit tests |
5616038 |
add more test coverage |
e74ff59 |
adds more test coverage and refactor to make code more testable |
e5c1ff4 |
add more test coverage + refactor to make code more testable |
765d09d |
refactor CqlDebugServer to make it more testable |
3250823 |
fix os file path issue |
a158690 |
add more tests |
f2b4f82 |
ci pipeline cleanup |
6b1897f |
clean-up code coverage tooling |
4b25669 |
fix naming issue with ci pipeline fix issue with codecov stuck on old cached results |
c7a95f2 |
ci pipeline cleanup |
e51895a |
clean-up ci pipeline |
01001d2 |
clean up ci pipeline code coverage report tooling settings |
8093809 |
upgrade mockito version to work with CI pipeline |
441a5dc |
update broken windows tests |
9a1ffa1 |
increase test coverage |
49fd23c |
spotless apply |
0aaf38d |
update change log |
f1cf229 |
add version info |
b1cad41 |
port file to kotlin |
3ad177c |
update cql engine to v4.9.0 |
5067068 |
validate breakpoints |
e885ba4 |
cql+ast debugger support enhancements |
0edee36 |
fix breakpoint issues with included libraries |
1699d82 |
add timestamp to server logs |
3324364 |
fix issue with missing parameters in debug variables panel |
df7a846 |
add define call stack and multi-frame stack trace, improve FHIR variable display formatting and profile children |
6298269 |
unified runtime value registry, test case scope, and CQL type annotations |
47a5322 |
clean up issue with stepping through AST |
16b23c7 |
add debug session shutdown enhancements |
c17a181 |
fix issue with library parameter display while debugging |
3427b22 |
add more structured library parameter display when debugging |
cd3a3dc |
add AST debug walking support |
d5de31f |
Show return types and retrieve filter details in ELM AST view; rename continue_ to resume |
3c78025 |
change AST indent to 2 spaces |
7c74c49 |
fix DAP debugger correctness, thread safety, and protocol gaps |
39d3a32 |
implement CQL stepping and improved debug server logic |
b66fbe7 |
update debug to support streaming |
1203741 |
debug hover enhancements |
7719af6 |
adds support for debug hover |
8e30975 |
adds cql debugging support |
09a6de4 |
code cleanup - rpc related |
f483e5f |
add convert CQL to ELM as an AST |
4db7699 |
bump version to 4.8.0 |
Closes #141
CQL Language Server 4.7.0
PR Summary: release/4.7.0 — cql-language-server
Base: master (9c9e11c)
HEAD: release/4.7.0 (e27d80b)
Commits: 19 (all by raleigh-g-thompson)
Files changed: 90 files (+9,681 / −1,408)
Version
- Bumped to
4.7.0and updatedpom.xmldependencies.
Multi-Project Library Resolution
LibraryResolutionManager— resolves CQL libraries across multiple project roots, configured via JSON config files.FederatedLibrarySourceProvider— aggregates library sources from multiple providers (file system, IG cache, etc.).FederatedTerminologyRepo— resolves terminologies (ValueSets, CodeSystems) across multiple repositories.JsonLibraryResolutionConfigProvider— reads library resolution config from.jsonfiles.IgContextManager— handles multiple IG context directories, manages IG resource bundles.FileContentService— retrieves CQL / library files from source providers and IGs.
Code Navigation (Reference Implementation)
DefinitionProvider— go-to-definition for aliases, expressions, functions, parameters, and codes/concepts.ReferencesProvider— find-all-references for symbols across the library.DocumentSymbolProvider— outline of definitions, functions, parameters.AllReferencesVisitor— ANTLR-based visitor for collecting all references to a given name.DefinitionTrackBackVisitor— maps ELM positions back to definitions for navigation.
Hybrid ANTLR Hover Architecture
CursorClassifier— new ANTLR-based classifier that determines what kind of symbol is under the cursor (alias, property, function call, expression ref, etc.) using the parse tree instead of ELM position.CqlParseTreeVisitor.findDeepestContext— finds the deepest parse-tree node at a given cursor position; fixed to usechildrenlist directly (avoids ANTLR KotlincopyFromdesync).- Keyword suppression logic for query clauses (
where,return,let,sort, etc.) — prevents ANTLR keywords from eating expression tokens and breaking cursor classification. QualifiedIdentifierExpressionnow checked beforeFunctionInvocationContextin classification ordering (fixes identifiers in function arguments being misclassified as function calls).
Hover Provider Enhancements
HoverProviderrewritten to use ANTLR-first classification with ELM fallback:- Alias hover resolves type from ANTLR parse tree + model manager (retrieve sources, expression-ref sources, parenthesized expressions at any depth).
- Property hover with ANTLR-first alias resolution (bypasses
FunctionRef/Unionwrappers in ELM). - Function call hover with ELM trackback-based library resolution (resolves unqualified function calls to their source library).
findAliasSourceextended to handleFunctionRef,Sort,Slice,Case,Repeat,Property,CombineELM nodes.resolvePropertyTypenow handlesChoiceTypealternatives.- Expression receiver properties resolved via ELM trackback (e.g.,
(query).property). - Coercion unwrapping (
Elements.unwrapCoercions) prevents compiler-generated wrappers from polluting results. - CQL syntax block formatting for hover output.
- Support for
Literal,OperandRef,OperandDef,ParameterDef,CodeRef,ConceptRefinExpressionTrackBackVisitor.
CqlEvaluator / Command Layer
- Refactored
CqlEvaluator— improved command structure forExecuteCqlCommand. ViewElmCommandContributionupdated for new service structure.CqlTextDocumentService— enhanced diagnostics and error reporting.
Test Coverage
HoverProviderTestexpanded from ~200 lines to ~1,900 lines — 80+ tests covering aliases, nested sub-queries, UNION branches,FunctionRef-wrapped unions,ChoiceTypeproperties, unqualified fluent functions, overloaded functions, coercion unwrapping, implicit scope, terminology references, and more.- New test classes:
CursorClassifierTest,DefinitionProviderTest,ReferencesProviderTest,DocumentSymbolProviderTest,FederatedLibrarySourceProviderTest,FederatedTerminologyRepoTest,LibraryResolutionManagerTest,JsonLibraryResolutionConfigProviderTest,CodeRefInsideRetrieveTest. - 30+ new CQL test fixture files covering edge cases (nested
exists(), unions,with/without, choice properties, function libraries, terminologies, etc.). CqlCompilationManagerTest,CqlEvaluatorTest,FileContentServiceTest,ExpressionTrackBackVisitorTest,IgContextManagerTestall expanded.
Formatting
- Code reformatted with
ktfmt(trailing commas, chain assignment, import ordering).
Commit Log
| Commit | Description |
|---|---|
e27d80b |
resolve alias hover in nested sub-queries and property hover across union + FunctionRef wrapper |
a348bd9 |
replace ELM-position-based hover with ANTLR CursorClassifier |
4cf5d9d |
prevent ANTLR keyword suppression from swallowing expression hovers |
bbbc69c |
resolve ANTLR keyword suppression for where/return/let/sort clauses |
5ac94a2 |
generic ANTLR keyword suppression for all query clause types |
6a9b850 |
change hover to use hybrid approach POC |
fbefb73 |
format code with ktfmt (trailing commas, chain assignment, import ordering) |
7aca7e2 |
add CQL test resources for hover and navigation coverage |
a35e17a |
enrich hover provider with CQL syntax output, coercion unwrapping, and new ELM type support |
20120c3 |
add go-to-definition support for function operands and parameters |
e42f6dd |
add ExpressionTrackBackVisitor support for Literal, OperandRef, OperandDef, ParameterRef, CodeRef, ConceptRef |
c820695 |
add Elements.unwrapCoercions for compiler-generated wrapper resolution |
7fee31b |
adds code navigation support |
b4cbbb7 |
code cleanup and more unit tests |
4dccade |
adds more LibraryResolutionManager tests |
d03862b |
adds more LibraryResolutionManager tests |
acd660d |
adds FederatedLibrarySourceProvider and FederatedTerminologyRepo |
8c12380 |
adds support for multi-projects library resolution |
f5e995f |
bump version to 4.7.0 |
CQL Language Server 4.6.0
What's Changed
- adds logging details to view elm command
- fix logging issues.
cql-ls.logwas not being updated - bump CR to 4.6.0
Full Changelog: v4.5.0...v4.6.0
CQL Language Server 4.5.0
What's Changed
- fixes threading issue with context loading by @raleigh-g-thompson in #132
- Feature/single module consolidation by @raleigh-g-thompson in #134
- bump version to 4.5.0 by @raleigh-g-thompson in #137
Full Changelog: v4.4.1...v4.5.0
CQL Language Server 4.4.1
CQL Language Server 4.3.0
What's Changed
- updates unit tests and adds github action ci support in #113
- migration to kotlin in #116
- adds dokka support to generate javadocs for the kotlin only projects in #118
Full Changelog: v4.2.0...v4.3.0
CQL Language Server 4.2.0
What's Changed
- adds support for View Elm as JSON command #44
- fixes issues with shutting down when vs-code extension process stops by @raleigh-g-thompson in #107
- bumps version to 4.2.0 by @raleigh-g-thompson in #108
Full Changelog: v4.1.2...v4.2.0
CQL Language Server 4.1.2
What's Changed
- Fixed exception loading cql options by @brynrhodes in #103
Full Changelog: v4.1.1...v4.1.2