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

No need to convert between Immutable and mutable arrays.

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