Skip to content

Releases: cqframework/cql-language-server

CQL Language Server 4.10.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 06 Jul 19:28
f3c7f3d

What's Changed

  • fixes issue with model info file discovery

Full Changelog: v4.9.0...v4.10.0

CQL Language Server 4.9.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 25 Jun 22:47
ab4ff15

What's Changed

Full Changelog: v4.8.0...v4.9.0

CQL Language Server 4.8.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 16 Jun 17:33
2b2fd34

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 to 4.9.0; Mockito upgraded to 5.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 ViewElmCommandContribution for displaying AST in the editor.

Version Info

  • GetVersionInfoCommandContribution and VersionReader — exposes language server version via LSP command; writes versions.properties at 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).
  • FileContentService improvements for cross-platform file resolution.
  • DefinitionTrackBackVisitor — minor fixes for ELM position mapping.

CI / Tooling

  • Consolidated CI workflows (ci.yml replaces check-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 CqlDebugServer for testability (DI-based StreamingBreakpointHandler).
  • Refactored CqlEvaluator / CqlTextDocumentService for 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

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 28 May 18:18
88c3a6c

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.0 and updated pom.xml dependencies.

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 .json files.
  • 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 use children list directly (avoids ANTLR Kotlin copyFrom desync).
  • Keyword suppression logic for query clauses (where, return, let, sort, etc.) — prevents ANTLR keywords from eating expression tokens and breaking cursor classification.
  • QualifiedIdentifierExpression now checked before FunctionInvocationContext in classification ordering (fixes identifiers in function arguments being misclassified as function calls).

Hover Provider Enhancements

  • HoverProvider rewritten 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 / Union wrappers in ELM).
    • Function call hover with ELM trackback-based library resolution (resolves unqualified function calls to their source library).
    • findAliasSource extended to handle FunctionRef, Sort, Slice, Case, Repeat, Property, Combine ELM nodes.
    • resolvePropertyType now handles ChoiceType alternatives.
    • 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, ConceptRef in ExpressionTrackBackVisitor.

CqlEvaluator / Command Layer

  • Refactored CqlEvaluator — improved command structure for ExecuteCqlCommand.
  • ViewElmCommandContribution updated for new service structure.
  • CqlTextDocumentService — enhanced diagnostics and error reporting.

Test Coverage

  • HoverProviderTest expanded from ~200 lines to ~1,900 lines — 80+ tests covering aliases, nested sub-queries, UNION branches, FunctionRef-wrapped unions, ChoiceType properties, 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, IgContextManagerTest all 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

closes #14
closes #22
closes #25
closes #42
closes #61

CQL Language Server 4.6.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 14 May 16:08
9c9e11c

What's Changed

  • adds logging details to view elm command
  • fix logging issues. cql-ls.log was not being updated
  • bump CR to 4.6.0

Full Changelog: v4.5.0...v4.6.0

CQL Language Server 4.5.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 30 Apr 19:31
b401fb4

What's Changed

Full Changelog: v4.4.1...v4.5.0

CQL Language Server 4.4.1

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 30 Mar 21:18
da2b1c5

What's Changed

  • adds dokka support in #126

Full Changelog: v4.4.0...v4.4.1

CQL Language Server 4.3.0

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 28 Mar 10:25
af78fb3

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

Choose a tag to compare

@raleigh-g-thompson raleigh-g-thompson released this 25 Feb 15:58
5fbc739

What's Changed

Full Changelog: v4.1.2...v4.2.0

CQL Language Server 4.1.2

Choose a tag to compare

@brynrhodes brynrhodes released this 10 Jan 20:55
a0d91ba

What's Changed

Full Changelog: v4.1.1...v4.1.2