public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var reducedFromResolution = reader.ReadSymbolKey(); var receiverTypeResolution = reader.ReadSymbolKey(); var q = from m in reducedFromResolution.GetAllSymbols().OfType <IMethodSymbol>() from t in receiverTypeResolution.GetAllSymbols().OfType <ITypeSymbol>() let r = m.ReduceExtensionMethod(t) select r; return(CreateSymbolInfo(q)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var reducedFromResolution = reader.ReadSymbolKey(); var receiverTypeResolution = reader.ReadSymbolKey(); var q = from m in reducedFromResolution.GetAllSymbols().OfType<IMethodSymbol>() from t in receiverTypeResolution.GetAllSymbols().OfType<ITypeSymbol>() let r = m.ReduceExtensionMethod(t) select r; return CreateSymbolInfo(q); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var pointedAtTypeResolution = reader.ReadSymbolKey(); return(CreateSymbolInfo(GetAllSymbols <ITypeSymbol>(pointedAtTypeResolution) .Select(reader.Compilation.CreatePointerTypeSymbol))); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var pointedAtTypeResolution = reader.ReadSymbolKey(); return CreateSymbolInfo(GetAllSymbols<ITypeSymbol>(pointedAtTypeResolution) .Select(reader.Compilation.CreatePointerTypeSymbol)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var isIndexer = reader.ReadBoolean(); var refKinds = reader.ReadRefKindArray(); var originalParameterTypes = reader.ReadSymbolKeyArray().Select( r => GetFirstSymbol<ITypeSymbol>(r)).ToArray(); if (originalParameterTypes.Any(s_typeIsNull)) { return default(SymbolKeyResolution); } var properties = containingSymbolResolution.GetAllSymbols().OfType<INamedTypeSymbol>() .SelectMany(t => t.GetMembers()) .OfType<IPropertySymbol>() .Where(p => p.Parameters.Length == refKinds.Length && p.MetadataName == metadataName && p.IsIndexer == isIndexer); var matchingProperties = properties.Where(p => ParameterRefKindsMatch(p.OriginalDefinition.Parameters, refKinds) && reader.ParameterTypesMatch(p.OriginalDefinition.Parameters, originalParameterTypes)); return CreateSymbolInfo(matchingProperties); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var elementTypeResolution = reader.ReadSymbolKey(); return(CreateSymbolInfo(GetAllSymbols <ITypeSymbol>(elementTypeResolution) .Select(s => reader.Compilation.CreateArrayTypeSymbol(s)))); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var elementTypeResolution = reader.ReadSymbolKey(); var rank = reader.ReadInteger(); return CreateSymbolInfo(GetAllSymbols<ITypeSymbol>(elementTypeResolution) .Select(s => reader.Compilation.CreateArrayTypeSymbol(s, rank))); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(); using var result = GetMembersOfNamedType <IEventSymbol>(containingTypeResolution, metadataName); return(CreateResolution(result)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(); var events = GetAllSymbols<INamedTypeSymbol>(containingTypeResolution) .SelectMany(t => t.GetMembers(metadataName)).OfType<IEventSymbol>(); return CreateSymbolInfo(events); }
protected sealed override SymbolKeyResolution Resolve( SymbolKeyReader reader, IModuleSymbol?contextualSymbol, out string?failureReason) { var containingSymbolResolution = reader.ReadSymbolKey(contextualSymbol?.ContainingSymbol, out var containingSymbolFailureReason); if (containingSymbolFailureReason != null) { failureReason = $"({nameof(ModuleSymbolKey)} {nameof(containingSymbolResolution)} failed -> {containingSymbolFailureReason})"; return(default);
protected sealed override SymbolKeyResolution Resolve( SymbolKeyReader reader, IPropertySymbol?contextualSymbol, out string?failureReason) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(contextualSymbol?.ContainingSymbol, out var containingTypeFailureReason); var isIndexer = reader.ReadBoolean(); using var refKinds = reader.ReadRefKindArray(); using var properties = GetMembersOfNamedType <IPropertySymbol>(containingTypeResolution, metadataName: null); using var result = PooledArrayBuilder <IPropertySymbol> .GetInstance(); // For each property that we look at, we'll have to resolve the parameter list and return type in the // context of that method. This makes sure we can attempt to resolve the parameter list types against // error types in the property we're currently looking at. // // Because of this, we keep track of where we are in the reader. Before resolving every parameter list, // we'll mark which method we're on and we'll rewind to this point. var beforeParametersPosition = reader.Position; IPropertySymbol?property = null; foreach (var candidate in properties) { if (candidate.Parameters.Length != refKinds.Count || candidate.MetadataName != metadataName || candidate.IsIndexer != isIndexer || !ParameterRefKindsMatch(candidate.OriginalDefinition.Parameters, refKinds)) { continue; } property = Resolve(reader, candidate); if (property != null) { break; } // reset ourselves so we can check the return-type/parameters against the next candidate. reader.Position = beforeParametersPosition; } if (reader.Position == beforeParametersPosition) { // We didn't find a match. Read through the stream one final time so we're at the correct location // after this PropertySymbolKey. _ = reader.ReadSymbolKeyArray <IPropertySymbol, ITypeSymbol>( contextualSymbol: null, getContextualSymbol: null, failureReason: out _); } if (containingTypeFailureReason != null) { failureReason = $"({nameof(PropertySymbolKey)} {nameof(containingTypeResolution)} failed -> {containingTypeFailureReason})"; return(default);
protected sealed override SymbolKeyResolution Resolve( SymbolKeyReader reader, IPointerTypeSymbol?contextualSymbol, out string?failureReason) { var pointedAtTypeResolution = reader.ReadSymbolKey(contextualSymbol?.PointedAtType, out var pointedAtTypeFailureReason); if (pointedAtTypeFailureReason != null) { failureReason = $"({nameof(PointerTypeSymbolKey)} {nameof(pointedAtTypeResolution)} failed -> {pointedAtTypeFailureReason})"; return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var parameters = GetAllSymbols(containingSymbolResolution).SelectMany( s => Resolve(reader, s, metadataName)); return CreateSymbolInfo(parameters); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var parameters = GetAllSymbols(containingSymbolResolution).SelectMany( s => Resolve(reader, s, metadataName)); return(CreateSymbolInfo(parameters)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(); var events = GetAllSymbols <INamedTypeSymbol>(containingTypeResolution) .SelectMany(t => t.GetMembers(metadataName)).OfType <IEventSymbol>(); return(CreateSymbolInfo(events)); }
protected sealed override SymbolKeyResolution Resolve( SymbolKeyReader reader, IArrayTypeSymbol?contextualSymbol, out string?failureReason) { var elementTypeResolution = reader.ReadSymbolKey(contextualSymbol?.ElementType, out var elementTypeFailureReason); var rank = reader.ReadInteger(); if (elementTypeFailureReason != null) { failureReason = $"({nameof(ArrayTypeSymbolKey)} {nameof(elementTypeResolution)} failed -> {elementTypeFailureReason})"; return(default);
protected sealed override SymbolKeyResolution Resolve( SymbolKeyReader reader, IEventSymbol?contextualSymbol, out string?failureReason) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(contextualSymbol?.ContainingType, out var containingTypeFailureReason); if (containingTypeFailureReason != null) { failureReason = $"({nameof(EventSymbolKey)} {nameof(containingTypeResolution)} failed -> {containingTypeFailureReason})"; return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var returnRefKind = reader.ReadRefKind(); var returnType = reader.ReadSymbolKey(); using var paramRefKinds = reader.ReadRefKindArray(); using var paramTypes = reader.ReadSymbolKeyArray <ITypeSymbol>(); if (paramTypes.IsDefault || !(returnType.GetAnySymbol() is ITypeSymbol returnTypeSymbol)) { return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var containingSymbolResolution = reader.ReadSymbolKey(); // Don't check ModuleIds for equality because in practice, no-one uses them, // and there is no way to set netmodule name programmatically using Roslyn var modules = GetAllSymbols<IAssemblySymbol>(containingSymbolResolution) .SelectMany(a => a.Modules); return CreateSymbolInfo(modules); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var containingSymbolResolution = reader.ReadSymbolKey(); // Don't check ModuleIds for equality because in practice, no-one uses them, // and there is no way to set netmodule name programmatically using Roslyn var modules = GetAllSymbols <IAssemblySymbol>(containingSymbolResolution) .SelectMany(a => a.Modules); return(CreateSymbolInfo(modules)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingTypeResolution = reader.ReadSymbolKey(); var isIndexer = reader.ReadBoolean(); using var refKinds = reader.ReadRefKindArray(); using var parameterTypes = reader.ReadSymbolKeyArray <ITypeSymbol>(); if (parameterTypes.IsDefault) { return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var constructedFromResolution = reader.ReadSymbolKey(); var typeArgumentResolutions = reader.ReadSymbolKeyArray(); Debug.Assert(!typeArgumentResolutions.IsDefault); var typeArguments = typeArgumentResolutions.Select( r => GetFirstSymbol <ITypeSymbol>(r)).ToArray(); if (typeArguments.Any(s_typeIsNull)) { return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var isIndexer = reader.ReadBoolean(); var refKinds = reader.ReadRefKindArray(); var originalParameterTypes = reader.ReadSymbolKeyArray().Select( r => GetFirstSymbol <ITypeSymbol>(r)).ToArray(); if (originalParameterTypes.Any(s_typeIsNull)) { return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var arity = reader.ReadInteger(); var typeKind = (TypeKind)reader.ReadInteger(); var isUnboundGenericType = reader.ReadBoolean(); var typeArgumentsOpt = reader.ReadSymbolKeyArray(); var types = GetAllSymbols<INamespaceOrTypeSymbol>(containingSymbolResolution).SelectMany( s => Resolve(reader, s, metadataName, arity, typeKind, isUnboundGenericType, typeArgumentsOpt)); return CreateSymbolInfo(types); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var pointedAtTypeResolution = reader.ReadSymbolKey(); using var result = PooledArrayBuilder <IPointerTypeSymbol> .GetInstance(pointedAtTypeResolution.SymbolCount); foreach (var typeSymbol in pointedAtTypeResolution.OfType <ITypeSymbol>()) { result.AddIfNotNull(reader.Compilation.CreatePointerTypeSymbol(typeSymbol)); } return(CreateResolution(result)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var arity = reader.ReadInteger(); var typeKind = (TypeKind)reader.ReadInteger(); var isUnboundGenericType = reader.ReadBoolean(); var typeArgumentsOpt = reader.ReadSymbolKeyArray(); var types = GetAllSymbols <INamespaceOrTypeSymbol>(containingSymbolResolution).SelectMany( s => Resolve(reader, s, metadataName, arity, typeKind, isUnboundGenericType, typeArgumentsOpt)); return(CreateSymbolInfo(types)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var elementTypeResolution = reader.ReadSymbolKey(); var rank = reader.ReadInteger(); using var result = PooledArrayBuilder <IArrayTypeSymbol> .GetInstance(elementTypeResolution.SymbolCount); foreach (var typeSymbol in elementTypeResolution.OfType <ITypeSymbol>()) { result.AddIfNotNull(reader.Compilation.CreateArrayTypeSymbol(typeSymbol, rank)); } return(CreateResolution(result)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var containingSymbolResolution = reader.ReadSymbolKey(); using var result = PooledArrayBuilder <IModuleSymbol> .GetInstance(); foreach (var assembly in containingSymbolResolution.OfType <IAssemblySymbol>()) { // Don't check ModuleIds for equality because in practice, no-one uses them, // and there is no way to set netmodule name programmatically using Roslyn result.AddValuesIfNotNull(assembly.Modules); } return(CreateResolution(result)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var isCompilationGlobalNamespace = reader.ReadBoolean(); var containingSymbolResolution = reader.ReadSymbolKey(); if (isCompilationGlobalNamespace) { return new SymbolKeyResolution(reader.Compilation.GlobalNamespace); } var namespaces = GetAllSymbols(containingSymbolResolution).SelectMany( s => Resolve(s, metadataName)); return CreateSymbolInfo(namespaces); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var underlyingTypeResolution = reader.ReadSymbolKey(); var tupleElementNames = reader.ReadStringArray(); try { var result = GetAllSymbols<INamedTypeSymbol>(underlyingTypeResolution).Select( t => reader.Compilation.CreateTupleTypeSymbol(t, tupleElementNames)); return CreateSymbolInfo(result); } catch (ArgumentException) { return new SymbolKeyResolution(reader.Compilation.ObjectType); } }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var isCompilationGlobalNamespace = reader.ReadBoolean(); var containingSymbolResolution = reader.ReadSymbolKey(); if (isCompilationGlobalNamespace) { return(new SymbolKeyResolution(reader.Compilation.GlobalNamespace)); } var namespaces = GetAllSymbols(containingSymbolResolution).SelectMany( s => Resolve(s, metadataName)); return(CreateSymbolInfo(namespaces)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var isError = reader.ReadBoolean(); if (isError) { var elementTypes = reader.ReadSymbolKeyArray().SelectAsArray(r => r.GetAnySymbol() as ITypeSymbol); var elementNames = reader.ReadStringArray(); var elementLocations = ReadElementLocations(reader); if (!elementTypes.Any(t => t == null)) { try { var result = reader.Compilation.CreateTupleTypeSymbol( elementTypes, elementNames, elementLocations); return(new SymbolKeyResolution(result)); } catch (ArgumentException) { } } } else { var underlyingTypeResolution = reader.ReadSymbolKey(); var elementNames = reader.ReadStringArray(); var elementLocations = ReadElementLocations(reader); try { var result = GetAllSymbols <INamedTypeSymbol>(underlyingTypeResolution).Select( t => reader.Compilation.CreateTupleTypeSymbol(t, elementNames, elementLocations)); return(CreateSymbolInfo(result)); } catch (ArgumentException) { } } return(new SymbolKeyResolution(reader.Compilation.ObjectType)); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var constructedFromResolution = reader.ReadSymbolKey(); var typeArgumentResolutions = reader.ReadSymbolKeyArray(); Debug.Assert(!typeArgumentResolutions.IsDefault); var typeArguments = typeArgumentResolutions.Select( r => GetFirstSymbol<ITypeSymbol>(r)).ToArray(); if (typeArguments.Any(s_typeIsNull)) { return default(SymbolKeyResolution); } var result = constructedFromResolution.GetAllSymbols() .OfType<IMethodSymbol>() .Select(m => m.Construct(typeArguments)); return CreateSymbolInfo(result); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var name = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var arity = reader.ReadInteger(); var typeArgumentResolutions = reader.ReadSymbolKeyArray(); var errorTypes = ResolveErrorTypes(reader, containingSymbolResolution, name, arity); if (typeArgumentResolutions.IsDefault) { return(CreateSymbolInfo(errorTypes)); } var typeArguments = typeArgumentResolutions.Select( r => GetFirstSymbol <ITypeSymbol>(r)).ToArray(); if (typeArguments.Any(s_typeIsNull)) { return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var localName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var ordinal = reader.ReadInteger(); var kind = (SymbolKind)reader.ReadInteger(); var containingSymbol = containingSymbolResolution.Symbol; if (containingSymbol != null) { foreach (var symbol in EnumerateSymbols( reader.Compilation, containingSymbol, kind, localName, reader.CancellationToken)) { if (symbol.Item2 == ordinal) { return new SymbolKeyResolution(symbol.Item1); } } } return new SymbolKeyResolution(); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var name = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var arity = reader.ReadInteger(); var typeArgumentResolutions = reader.ReadSymbolKeyArray(); var errorTypes = ResolveErrorTypes(reader, containingSymbolResolution, name, arity); if (typeArgumentResolutions.IsDefault) { return CreateSymbolInfo(errorTypes); } var typeArguments = typeArgumentResolutions.Select( r => GetFirstSymbol<ITypeSymbol>(r)).ToArray(); if (typeArguments.Any(s_typeIsNull)) { return default(SymbolKeyResolution); } return CreateSymbolInfo(errorTypes.Select(t => t.Construct(typeArguments))); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var name = reader.ReadString(); var targetResolution = reader.ReadSymbolKey(); var filePath = reader.ReadString(); var syntaxTree = reader.GetSyntaxTree(filePath); if (syntaxTree != null) { var target = targetResolution.GetAnySymbol(); if (target != null) { var semanticModel = reader.Compilation.GetSemanticModel(syntaxTree); var result = Resolve(semanticModel, syntaxTree.GetRoot(reader.CancellationToken), name, target, reader.CancellationToken); if (result.HasValue) { return(result.Value); } } } return(default);
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var name = reader.ReadString(); var targetResolution = reader.ReadSymbolKey(); var filePath = reader.ReadString(); var syntaxTree = reader.GetSyntaxTree(filePath); if (syntaxTree != null) { var target = targetResolution.GetAnySymbol(); if (target != null) { var semanticModel = reader.Compilation.GetSemanticModel(syntaxTree); var result = Resolve(semanticModel, syntaxTree.GetRoot(reader.CancellationToken), name, target, reader.CancellationToken); if (result.HasValue) { return result.Value; } } } return default(SymbolKeyResolution); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var result = containingSymbolResolution.GetAllSymbols() .SelectMany(s => { if (s is INamedTypeSymbol) { return ((INamedTypeSymbol)s).TypeParameters.Where(p => p.MetadataName == metadataName); } else if (s is IMethodSymbol) { return ((IMethodSymbol)s).TypeParameters.Where(p => p.MetadataName == metadataName); } else { return SpecializedCollections.EmptyEnumerable<ITypeParameterSymbol>(); } }); return CreateSymbolInfo(result); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var localName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var ordinal = reader.ReadInteger(); var kind = (SymbolKind)reader.ReadInteger(); var containingSymbol = containingSymbolResolution.Symbol; if (containingSymbol != null) { foreach (var symbol in EnumerateSymbols( reader.Compilation, containingSymbol, kind, localName, reader.CancellationToken)) { if (symbol.ordinal == ordinal) { return(new SymbolKeyResolution(symbol.symbol)); } } } return(new SymbolKeyResolution()); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var result = containingSymbolResolution.GetAllSymbols() .SelectMany(s => { if (s is INamedTypeSymbol namedType) { return(namedType.TypeParameters.Where(p => p.MetadataName == metadataName)); } else if (s is IMethodSymbol method) { return(method.TypeParameters.Where(p => p.MetadataName == metadataName)); } else { return(SpecializedCollections.EmptyEnumerable <ITypeParameterSymbol>()); } }); return(CreateSymbolInfo(result)); }
private static IMethodSymbol Resolve( SymbolKeyReader reader, bool isPartialMethodImplementationPart, IMethodSymbol method) { var originalParameterTypeResolutions = reader.ReadSymbolKeyArray(); var returnType = GetFirstSymbol<ITypeSymbol>(reader.ReadSymbolKey()); var originalParameterTypes = originalParameterTypeResolutions.Select( r => GetFirstSymbol<ITypeSymbol>(r)).ToArray(); if (!originalParameterTypes.Any(s_typeIsNull)) { if (reader.ParameterTypesMatch(method.OriginalDefinition.Parameters, originalParameterTypes)) { if (returnType == null || reader.Comparer.Equals(returnType, method.ReturnType)) { if (isPartialMethodImplementationPart) { method = method.PartialImplementationPart ?? method; } Debug.Assert(method != null); return method; } } } return null; }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var metadataName = reader.ReadString(); var containingSymbolResolution = reader.ReadSymbolKey(); var arity = reader.ReadInteger(); var isPartialMethodImplementationPart = reader.ReadBoolean(); var parameterRefKinds = reader.ReadRefKindArray(); // For each method that we look at, we'll have to resolve the parameter list and // return type in the context of that method. i.e. if we have Foo<T>(IList<T> list) // then we'll need to have marked that we're on the Foo<T> method so that we know // 'T' in IList<T> resolves to. // // Because of this, we keep track of where we are in the reader. Before resolving // every parameter list, we'll mark which method we're on and we'll rewind to this // point. var beforeParametersPosition = reader.Position; var result = new List<IMethodSymbol>(); var namedTypes = containingSymbolResolution.GetAllSymbols().OfType<INamedTypeSymbol>(); foreach (var namedType in namedTypes) { var method = Resolve(reader, metadataName, arity, isPartialMethodImplementationPart, parameterRefKinds, beforeParametersPosition, namedType); // Note: after finding the first method that matches we stop. That's necessary // as we cache results while searching. We don't want to override these positive // matches with a negative ones if we were to continue searching. if (method != null) { result.Add(method); break; } } if (reader.Position == beforeParametersPosition) { // We didn't find any candidates. We still need to stream through this // method signature so the reader is in a proper position. var parameterTypeResolutions = reader.ReadSymbolKeyArray(); var returnType = GetFirstSymbol<ITypeSymbol>(reader.ReadSymbolKey()); } return CreateSymbolInfo(result); }