// Step 1922: Sprint 278 Integration // poly-parse project: C++ lexer component + Haskell AST transform. // All four hardening components work together: // - Validator rejects malformed messages // - Negotiator blocks methods haskell-lsp doesn't support // - Throttler debounces rapid didChange from the C++ lexer // - ErrorRecovery serves stale diags when haskell-lsp crashes // // t1: validator rejects bad message before routing // t2: negotiator blocks referencesProvider (haskell-lsp doesn't declare it) // t3: throttler debounces rapid didChange on lexer.cpp // t4: error recovery serves stale haskell diags after crash // t5: healthy gopls still routes normally; haskell-lsp in recovery // t6: Sprint278IntegrationSummary reports complete #include "LSPMessageValidator.h" #include "LSPCapabilityNegotiator.h" #include "LSPRequestThrottler.h" #include "LSPErrorRecovery.h" #include "Sprint278IntegrationSummary.h" #include #include using json = nlohmann::json; namespace ws = whetstone; static int p=0,f=0; #define T(n) { std::cout<<" "<<#n<<"... "; } #define P() { std::cout<<"PASS\n"; ++p; } #define F(m) { std::cout<<"FAIL: "< 0 ? 1 : 0; }