{"record":{"id":"706a8971dbd2188e","repo":"zed-industries/zed","slug":"failed-to-load-language-language-name-e","errorCode":null,"errorMessage":"failed to load language {language_name}: {e}","messagePattern":"failed to load language (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/language/src/language_registry.rs","lineNumber":697,"sourceCode":"            if loaded_language.id == language_id {\n                tx.send(Ok(loaded_language.clone())).unwrap();\n                return rx;\n            }\n        }\n\n        let Some(available_language) = state.available_languages.get_language(language_id) else {\n            tx.send(Err(anyhow!(LanguageNotFound))).ok();\n            return rx;\n        };\n\n        let (language_name, language_load) = (\n            available_language.name.clone(),\n            available_language.load.clone(),\n        );\n\n        match state.loading_languages.entry(language_id) {\n            // If the language is already being loaded, then add this\n            // channel to a list that will be sent to when the load completes.\n            hash_map::Entry::Occupied(mut entry) => entry.get_mut().push(tx),\n\n            // Otherwise, start loading the language.\n            hash_map::Entry::Vacant(entry) => {\n                let this = self.clone();\n\n                self.executor\n                    .spawn(async move {\n                        let language = async {\n                            let loaded_language = (language_load)().await?;\n                            if let Some(grammar) = loaded_language.config.grammar.clone() {\n                                let grammar = Some(this.get_or_load_grammar(grammar).await?);\n\n                                Language::new_with_id(language_id, loaded_language.config, grammar)\n                                    .with_context_provider(loaded_language.context_provider)\n                                    .with_toolchain_lister(loaded_language.toolchain_provider)\n                                    .with_manifest(loaded_language.manifest_name)\n                                    .with_queries(loaded_language.queries)","sourceCodeStart":679,"sourceCodeEnd":715,"githubUrl":"https://github.com/zed-industries/zed/blob/5a9b9558db01a6b906cec2fb70a797affdc58cdd/crates/language/src/language_registry.rs#L679-L715","documentation":"Wrapper error in load_language's completion path: the language's async loader (or its grammar load) failed, and while draining the queued oneshot senders for waiters, a replacement language id could be found but reloading it also failed, so all waiters receive this error wrapping the underlying message. It means language {language_name} could not be made available — the root cause is the inner error (e.g. WASM grammar load failure, missing extension files, or a panic in the language's load closure).","triggerScenarios":"Thrown at crates/language/src/language_registry.rs:689 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the inner error ({e}) for the root cause — commonly a corrupted or missing grammar WASM file","Reinstall or update the language extension that provides this language","Retry loading; some failures (e.g. transient extension download problems) are recoverable"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5a9b9558db01a6b906cec2fb70a797affdc58cdd","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}