View Source cure_lsp_diagnostics (cure v0.7.0)
LSP Rich Diagnostics with SMT Counterexamples
This module enhances LSP diagnostics with:
- Concrete counterexamples from SMT solver (e.g., \"x = -5 violates x > 0\")
- Constraint context (shows where constraint was defined)
- Related information links (jump to constraint definition)
- Human-readable formatting of SMT output
Example Enhanced Diagnostic
Error: Refinement type constraint violated
Type: Positive
Required: x > 0
Counterexample: x = -5 violates constraint
Defined at: examples/test.cure:10:15
Hint: Add a guard clause 'when x > 0' or use runtime assertionFeatures
Counterexample Formatting
- Extract concrete values from SMT models
- Format in Cure syntax (not SMT-LIB)
- Show multiple variables if constraint involves them
Constraint Context
- Track constraint definition locations
- Show original Cure code for constraint
- Link to definition via LSP relatedInformation
Hover Information
- Show inferred refinement types on hover
- Display active constraints for variables
- Preview constraint satisfaction status