Implement enhanced C# language tokenizer to fix string highlighting i…#45
Conversation
🔍 Code Review: Enhanced C# Language Tokenizer ImplementationReview Summary
❌ Critical Issues (Must Fix)1. Logic Error in Batch ProcessingFile: if (requestId !== requestId || !tokens.data || tokens.data.length === 0) return;Fix: Should compare against the current requestId parameter: if (currentRequestId !== requestId || !tokens.data || tokens.data.length === 0) return;2. Potential Race Condition in Override ApplicationFile: const scheduleOverride = (delay = 0, attemptsLeft = 10) => {
if (attemptsLeft <= 0) {
console.warn('Failed to apply C# tokenizer override after maximum attempts');
return;
}
setTimeout(() => {
const applied = applyOverride();
if (!applied) {
const nextDelay = Math.min(delay * 1.5 + 50, 1000); // Exponential backoff
scheduleOverride(nextDelay, attemptsLeft - 1);
}
}, delay);
};3. Memory Leak Risk in Worker Message HandlingFile: let timeoutHandle = null;
const handleWorkerMessage = (e) => {
if (e.data.action === 'tokenProcessed') {
clearTimeout(timeoutHandle);
semanticWorker.removeEventListener('message', handleWorkerMessage);
const processedTokens = e.data.result;
applyProcessedDecorations(model, processedTokens, legend, decorationIds);
resolve();
}
};
timeoutHandle = setTimeout(() => {
semanticWorker.removeEventListener('message', handleWorkerMessage);
console.warn('Worker processing timeout');
resolve(); // Don't reject, just continue
}, 5000);
|
…ssues with URLs