public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var methodIndex = reader.ReadInteger(); var ordinal = reader.ReadInteger(); var method = reader.ResolveMethod(methodIndex); var typeParameter = method?.TypeParameters[ordinal]; return(typeParameter == null ? default : new SymbolKeyResolution(typeParameter)); }
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 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(); return(CreateSymbolInfo(GetAllSymbols <ITypeSymbol>(elementTypeResolution) .Select(s => reader.Compilation.CreateArrayTypeSymbol(s, rank)))); }
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, out string?failureReason) { var elementTypeResolution = reader.ReadSymbolKey(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, 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);
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 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 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 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 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 ordinal = reader.ReadInteger(); var typeParameter = reader.CurrentMethod.TypeParameters[ordinal]; return new SymbolKeyResolution(typeParameter); }
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); }