Follow-up to #255 (core shipped in ba530e1: unconditional OMIT invisible to diagnostics + refs/counts, rename still included, COMPILE polarity fixed).
Two deferred phases from the decided semantics table:
1. Conditional OMIT/COMPILE evaluation (server substrate)
OMIT('***', _DEBUG_) / COMPILE('***', TraceFiles) are conservatively treated as LIVE today (defines aren''t evaluated). The substrate step: plumb the active configuration''s defines from the solution layer (.cwproj) into OmitCompileDetector so conditional blocks resolve to omitted/live per the ACTIVE build config. Gate behind bidirectional-pin fixtures — evaluating defines changes rename/refs visibility silently if wrong. Note the equate-vs-define distinction and _WIDTH32_-style built-ins.
2. Gray-out decoration (client phase)
The primary UX in every C++ IDE for inactive regions. Client already has decorator infrastructure to extend (UnreachableCodeDecorator). Server can ship the omitted ranges (from findDirectiveBlocks, OMIT-only per the #255 polarity rule) via a custom notification, client renders editorUnnecessaryCode-style dimming.
Both phases inherit the #255 test harness (OmitCompile.PipelineVisibility.test.ts).
Follow-up to #255 (core shipped in
ba530e1: unconditional OMIT invisible to diagnostics + refs/counts, rename still included, COMPILE polarity fixed).Two deferred phases from the decided semantics table:
1. Conditional OMIT/COMPILE evaluation (server substrate)
OMIT('***', _DEBUG_)/COMPILE('***', TraceFiles)are conservatively treated as LIVE today (defines aren''t evaluated). The substrate step: plumb the active configuration''s defines from the solution layer (.cwproj) intoOmitCompileDetectorso conditional blocks resolve to omitted/live per the ACTIVE build config. Gate behind bidirectional-pin fixtures — evaluating defines changes rename/refs visibility silently if wrong. Note the equate-vs-define distinction and_WIDTH32_-style built-ins.2. Gray-out decoration (client phase)
The primary UX in every C++ IDE for inactive regions. Client already has decorator infrastructure to extend (UnreachableCodeDecorator). Server can ship the omitted ranges (from
findDirectiveBlocks, OMIT-only per the #255 polarity rule) via a custom notification, client renderseditorUnnecessaryCode-style dimming.Both phases inherit the #255 test harness (
OmitCompile.PipelineVisibility.test.ts).