提交 197bd722 编写于 作者: C CyrusNajmabadi

No need to convert between Immutable and mutable arrays.

上级 ecf4d83a
...@@ -175,10 +175,11 @@ public SymbolSearchUpdateEngine(ISymbolSearchLogService logService) ...@@ -175,10 +175,11 @@ public SymbolSearchUpdateEngine(ISymbolSearchLogService logService)
// Only look at reference assembly results. // Only look at reference assembly results.
if (type.PackageName.ToString() == MicrosoftAssemblyReferencesName) if (type.PackageName.ToString() == MicrosoftAssemblyReferencesName)
{ {
var nameParts = new List<string>(); var nameParts = ArrayBuilder<string>.GetInstance();
GetFullName(nameParts, type.FullName.Parent); GetFullName(nameParts, type.FullName.Parent);
var result = new ReferenceAssemblyWithTypeResult( var result = new ReferenceAssemblyWithTypeResult(
type.AssemblyName.ToString(), type.Name.ToString(), containingNamespaceNames: nameParts); type.AssemblyName.ToString(), type.Name.ToString(),
containingNamespaceNames: nameParts.ToImmutableAndFree());
results.Add(result); results.Add(result);
} }
} }
...@@ -200,7 +201,7 @@ where this.IsType(symbol) && !this.IsType(symbol.Parent()) ...@@ -200,7 +201,7 @@ where this.IsType(symbol) && !this.IsType(symbol.Parent())
private PackageWithTypeResult CreateResult(AddReferenceDatabase database, Symbol type) private PackageWithTypeResult CreateResult(AddReferenceDatabase database, Symbol type)
{ {
var nameParts = new List<string>(); var nameParts = ArrayBuilder<string>.GetInstance();
GetFullName(nameParts, type.FullName.Parent); GetFullName(nameParts, type.FullName.Parent);
var packageName = type.PackageName.ToString(); var packageName = type.PackageName.ToString();
...@@ -212,7 +213,7 @@ private PackageWithTypeResult CreateResult(AddReferenceDatabase database, Symbol ...@@ -212,7 +213,7 @@ private PackageWithTypeResult CreateResult(AddReferenceDatabase database, Symbol
typeName: type.Name.ToString(), typeName: type.Name.ToString(),
version: version, version: version,
rank: GetRank(type), rank: GetRank(type),
containingNamespaceNames: nameParts); containingNamespaceNames: nameParts.ToImmutableAndFree());
} }
private int GetRank(Symbol symbol) private int GetRank(Symbol symbol)
...@@ -260,7 +261,7 @@ private bool IsType(Symbol symbol) ...@@ -260,7 +261,7 @@ private bool IsType(Symbol symbol)
return symbol.Type.IsType(); return symbol.Type.IsType();
} }
private void GetFullName(List<string> nameParts, Path8 path) private void GetFullName(ArrayBuilder<string> nameParts, Path8 path)
{ {
if (!path.IsEmpty) if (!path.IsEmpty)
{ {
......
...@@ -64,7 +64,7 @@ protected PackageResult(string packageName, int rank) ...@@ -64,7 +64,7 @@ protected PackageResult(string packageName, int rank)
internal class PackageWithTypeResult : PackageResult internal class PackageWithTypeResult : PackageResult
{ {
public readonly IReadOnlyList<string> ContainingNamespaceNames; public readonly ImmutableArray<string> ContainingNamespaceNames;
public readonly string TypeName; public readonly string TypeName;
public readonly string Version; public readonly string Version;
...@@ -73,7 +73,7 @@ internal class PackageWithTypeResult : PackageResult ...@@ -73,7 +73,7 @@ internal class PackageWithTypeResult : PackageResult
string typeName, string typeName,
string version, string version,
int rank, int rank,
IReadOnlyList<string> containingNamespaceNames) ImmutableArray<string> containingNamespaceNames)
: base(packageName, rank) : base(packageName, rank)
{ {
TypeName = typeName; TypeName = typeName;
...@@ -118,14 +118,14 @@ public int CompareTo(PackageWithAssemblyResult other) ...@@ -118,14 +118,14 @@ public int CompareTo(PackageWithAssemblyResult other)
internal class ReferenceAssemblyWithTypeResult internal class ReferenceAssemblyWithTypeResult
{ {
public readonly IReadOnlyList<string> ContainingNamespaceNames; public readonly ImmutableArray<string> ContainingNamespaceNames;
public readonly string AssemblyName; public readonly string AssemblyName;
public readonly string TypeName; public readonly string TypeName;
public ReferenceAssemblyWithTypeResult( public ReferenceAssemblyWithTypeResult(
string assemblyName, string assemblyName,
string typeName, string typeName,
IReadOnlyList<string> containingNamespaceNames) ImmutableArray<string> containingNamespaceNames)
{ {
AssemblyName = assemblyName; AssemblyName = assemblyName;
TypeName = typeName; TypeName = typeName;
......
...@@ -161,7 +161,7 @@ protected override PackageWithTypeResult ReadValue(JsonReader reader, JsonSerial ...@@ -161,7 +161,7 @@ protected override PackageWithTypeResult ReadValue(JsonReader reader, JsonSerial
var typeName = ReadProperty<string>(reader); var typeName = ReadProperty<string>(reader);
var version = ReadProperty<string>(reader); var version = ReadProperty<string>(reader);
var rank = (int)ReadProperty<long>(reader); var rank = (int)ReadProperty<long>(reader);
var containingNamespaceNames = ReadProperty<string[]>(serializer, reader); var containingNamespaceNames = ReadProperty<ImmutableArray<string>>(serializer, reader);
Contract.ThrowIfFalse(reader.Read()); Contract.ThrowIfFalse(reader.Read());
Contract.ThrowIfFalse(reader.TokenType == JsonToken.EndObject); Contract.ThrowIfFalse(reader.TokenType == JsonToken.EndObject);
...@@ -186,7 +186,7 @@ protected override void WriteValue(JsonWriter writer, PackageWithTypeResult sour ...@@ -186,7 +186,7 @@ protected override void WriteValue(JsonWriter writer, PackageWithTypeResult sour
writer.WriteValue(source.Rank); writer.WriteValue(source.Rank);
writer.WritePropertyName(nameof(PackageWithTypeResult.ContainingNamespaceNames)); writer.WritePropertyName(nameof(PackageWithTypeResult.ContainingNamespaceNames));
writer.WriteValue(source.ContainingNamespaceNames.ToArray()); serializer.Serialize(writer, source.ContainingNamespaceNames);
writer.WriteEndObject(); writer.WriteEndObject();
} }
...@@ -233,7 +233,7 @@ protected override ReferenceAssemblyWithTypeResult ReadValue(JsonReader reader, ...@@ -233,7 +233,7 @@ protected override ReferenceAssemblyWithTypeResult ReadValue(JsonReader reader,
var assemblyName = ReadProperty<string>(reader); var assemblyName = ReadProperty<string>(reader);
var typeName = ReadProperty<string>(reader); var typeName = ReadProperty<string>(reader);
var containingNamespaceNames = ReadProperty<string[]>(serializer, reader); var containingNamespaceNames = ReadProperty<ImmutableArray<string>>(serializer, reader);
Contract.ThrowIfFalse(reader.Read()); Contract.ThrowIfFalse(reader.Read());
Contract.ThrowIfFalse(reader.TokenType == JsonToken.EndObject); Contract.ThrowIfFalse(reader.TokenType == JsonToken.EndObject);
...@@ -252,7 +252,7 @@ protected override void WriteValue(JsonWriter writer, ReferenceAssemblyWithTypeR ...@@ -252,7 +252,7 @@ protected override void WriteValue(JsonWriter writer, ReferenceAssemblyWithTypeR
writer.WriteValue(source.TypeName); writer.WriteValue(source.TypeName);
writer.WritePropertyName(nameof(ReferenceAssemblyWithTypeResult.ContainingNamespaceNames)); writer.WritePropertyName(nameof(ReferenceAssemblyWithTypeResult.ContainingNamespaceNames));
writer.WriteValue(source.ContainingNamespaceNames.ToArray()); serializer.Serialize(writer, source.ContainingNamespaceNames);
writer.WriteEndObject(); writer.WriteEndObject();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册