VOID Tooling

Compiler-owned intelligence.
A complete language-server foundation.

voidc now carries the same compiler semantics from command-line checking into live editor diagnostics, hover, signature help, completion, navigation, references, symbols, and synchronized multi-file unsaved state.

Tooling block complete

The editor-facing stack lives inside voidc.

The language server does not duplicate parsing, type checking, overload resolution, access rules, or project discovery. It asks the compiler the same questions normal compilation already knows how to answer.

Source spans & ranged diagnostics

Implemented End-exclusive source ranges flow through tokens/syntax and one shared lexer/parser/semantic diagnostic model.

voidc check

Implemented Full front-end validation without C generation, native compilation, or build outputs.

Semantic query sessions

Implemented Persistent analyzed projects answer symbol, type, definition, member, callable, completion, reference, and symbol queries.

Debug/source mapping

Implemented Generated C #line mappings let native debug information point back to original .void files and lines.

voidc lsp lifecycle & documents

Implemented Framed JSON-RPC, initialize/shutdown lifecycle, full-document synchronization, versioned in-memory text, project discovery, and UTF-16/LSP position conversion.

Live diagnostics

Implemented Lexer, parser, and semantic diagnostics publish directly from unsaved buffers and clear as source is fixed or closed.

Hover & signature help

Implemented Compiler bindings provide typed hover labels, overload sets, constructors, delegates, optional/params signatures, named-argument mapping, and active-parameter selection.

Semantic completion

Implemented Instance/static/inherited members, accessibility filtering, enums, locals, parameters, project types, namespaces, and LSP completion kinds come from real semantic state.

Navigation, references & symbols

Implemented Cross-file definition lookup, declaration-identity references, document symbols, and workspace symbol filtering use compiler-owned declarations and bindings.

Multi-file editor stabilization

Implemented All open files in a project are analyzed as one in-memory snapshot. Dependent diagnostics refresh across unsaved edits, temporarily broken source does not poison later requests, and closing a file falls back to disk.

Compiler-side language server
./bin/voidc lsp

// Compiler-backed features:
publishDiagnostics
hover
signatureHelp
completion
definition
references
documentSymbol
workspace/symbol

What comes next

Tooling is stable enough to return to the language.

The next public roadmap phase closes remaining object-model and language gaps: constructor chaining/delegation, interface inheritance, struct interface implementation, virtual properties, event/delegate completion, and the conditional expression. A future VS Code extension can stay thin because the language intelligence already lives in voidc lsp.