提交 65bbc3ed 编写于 作者: H heejaechang

narrowed down a bit more to see which part is having a problem.

removed previous diagnostic code and added new one which most likely tell us what went wrong. (changeset 1344144)
上级 fdc098e7
......@@ -272,14 +272,10 @@ public override TLanguageService GetService<TLanguageService>()
Lazy<ILanguageService, LanguageServiceMetadata> service;
if (TryGetService(typeof(TLanguageService), out service))
{
var result = (TLanguageService)service.Value;
Contract.ThrowIfTrue(EqualityComparer<TLanguageService>.Default.Equals(result, default(TLanguageService)));
return result;
return (TLanguageService)service.Value;
}
else
{
Contract.ThrowIfTrue(typeof(TLanguageService) == typeof(ISyntaxTreeFactoryService));
return default(TLanguageService);
}
}
......@@ -291,14 +287,11 @@ internal bool TryGetService(Type serviceType, out Lazy<ILanguageService, Languag
service = ImmutableInterlocked.GetOrAdd(ref this.serviceMap, serviceType, svctype =>
{
var serviceTypes = this.services.Where(lz => lz.Metadata.ServiceType == svctype.AssemblyQualifiedName);
Contract.ThrowIfFalse(serviceType != typeof(ISyntaxTreeFactoryService) || !serviceTypes.IsEmpty());
var result = PickLanguageService(serviceTypes);
if (serviceType == typeof(ISyntaxTreeFactoryService) && result == null)
if (serviceType == typeof(ISyntaxTreeFactoryService) && serviceTypes.IsEmpty())
{
var assembly = svctype.AssemblyQualifiedName;
var kind = this.workspaceServices.Workspace.Kind;
var tempServices = this.services.Select(lz => ValueTuple.Create(lz.Value, lz.Metadata)).ToArray();
var tempServices = this.services.Select(lz => ValueTuple.Create(lz.Value, lz.Metadata, lz.Metadata.ServiceType)).ToArray();
var serviceMap = this.serviceMap.Select(kv => ValueTuple.Create(kv.Key, kv.Value.Value, kv.Value.Metadata)).ToArray();
ExceptionHelpers.Crash(new Exception("Crash"));
......@@ -308,11 +301,10 @@ internal bool TryGetService(Type serviceType, out Lazy<ILanguageService, Languag
GC.KeepAlive(serviceMap);
}
return result;
return PickLanguageService(serviceTypes);
});
}
Contract.ThrowIfFalse(serviceType != typeof(ISyntaxTreeFactoryService) || service != null);
return service != default(Lazy<ILanguageService, LanguageServiceMetadata>);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册