public async Task LoadExtension(PythonAnalysisExtensionParams extension) { using (AllowRequestCancellation()) { var provider = ActivateObject <ILanguageServerExtensionProvider>(extension.assembly, extension.typeName, null); if (provider == null) { LogMessage(MessageType.Error, $"Extension provider {extension.assembly} {extension.typeName} failed to load"); return; } var ext = await provider.CreateAsync(this, extension.properties ?? new Dictionary <string, object>(), CancellationToken); if (ext == null) { LogMessage(MessageType.Error, $"Extension provider {extension.assembly} {extension.typeName} returned null"); return; } string n = null; try { n = ext.Name; } catch (NotImplementedException) { } catch (NotSupportedException) { } if (!string.IsNullOrEmpty(n)) { _extensions.AddOrUpdate(n, ext, (_, previous) => { (previous as IDisposable)?.Dispose(); return(ext); }); } } }
public Task LoadExtension(PythonAnalysisExtensionParams extension) => LoadExtension(extension, CancellationToken.None);