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 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 propertyTypeSymbols = reader.ReadSymbolKeyArray(); var propertyTypes = propertyTypeSymbols.Select(r => GetFirstSymbol<ITypeSymbol>(r)).ToImmutableArray(); var propertyNames = reader.ReadStringArray(); if (propertyTypes.Length == propertyNames.Length) { try { var anonymousType = reader.Compilation.CreateAnonymousTypeSymbol(propertyTypes, propertyNames); return new SymbolKeyResolution(anonymousType); } catch (ArgumentException) { } } return new SymbolKeyResolution(reader.Compilation.ObjectType); }
public static SymbolKeyResolution Resolve(SymbolKeyReader reader) { var propertyTypeSymbols = reader.ReadSymbolKeyArray(); var propertyTypes = propertyTypeSymbols.Select(r => GetFirstSymbol <ITypeSymbol>(r)).ToImmutableArray(); var propertyNames = reader.ReadStringArray(); var propertyIsReadOnly = reader.ReadBooleanArray(); var propertyLocations = reader.ReadLocationArray(); if (propertyTypes.Length == propertyNames.Length) { try { var anonymousType = reader.Compilation.CreateAnonymousTypeSymbol( propertyTypes, propertyNames, propertyIsReadOnly, propertyLocations); return(new SymbolKeyResolution(anonymousType)); } catch (ArgumentException) { } } return(new SymbolKeyResolution(reader.Compilation.ObjectType)); }