Skip to content

Commit 273a8da

Browse files
committed
Migrate to ICSharpCode.ILSpyX 10.0 Preview 2
Also upgrade some more dependencies
1 parent dbb2c1f commit 273a8da

6 files changed

Lines changed: 75 additions & 29 deletions

File tree

backend/ILSpyX.Backend.LSP/ILSpyX.Backend.LSP.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
1919
</PropertyGroup>
2020
<ItemGroup>
21-
<PackageReference Include="GitVersion.MsBuild" Version="6.5.0">
21+
<PackageReference Include="GitVersion.MsBuild" Version="6.5.1">
2222
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2323
<PrivateAssets>all</PrivateAssets>
2424
</PackageReference>
25-
<PackageReference Include="ICSharpCode.ILSpyX" Version="9.1.0.7988"/>
25+
<PackageReference Include="ICSharpCode.ILSpyX" Version="10.0.0.8282-preview2"/>
2626
<PackageReference Include="Mono.Cecil" Version="0.11.6"/>
2727
<PackageReference Include="OmniSharp.Extensions.LanguageServer" Version="0.19.9"/>
2828
<PackageReference Include="Serilog" Version="4.3.0"/>
2929
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0"/>
3030
<PackageReference Include="Serilog.Sinks.Debug" Version="3.0.0"/>
31-
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0"/>
31+
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.1"/>
3232
</ItemGroup>
3333
<ItemGroup>
3434
<ProjectReference Include="..\ILSpyX.Backend\ILSpyX.Backend.csproj"/>

backend/ILSpyX.Backend.Tests/ILSpyX.Backend.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
<ItemGroup>
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1"/>
1818
<PackageReference Include="xunit" Version="2.9.3"/>
19-
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0"/>
20-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0"/>
19+
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.1"/>
20+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.1"/>
2121
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
2222
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2323
<PrivateAssets>all</PrivateAssets>

backend/ILSpyX.Backend/Decompiler/CSharpLanguage.cs

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@ namespace ILSpyX.Backend.Decompiler;
1515

1616
public class CSharpLanguage : ILanguage
1717
{
18-
public CSharpLanguage()
19-
{
20-
}
21-
2218
public string EventToString(IEvent @event, bool includeDeclaringTypeName, bool includeNamespace, bool includeNamespaceOfDeclaringTypeName)
2319
{
2420
if (@event == null)
@@ -49,8 +45,10 @@ public string GetEntityName(MetadataFile module, EntityHandle handle, bool fullN
4945
var declaringType = fd.GetDeclaringType();
5046
if (fullName)
5147
{
52-
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." + metadata.GetString(fd.Name);
48+
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." +
49+
metadata.GetString(fd.Name);
5350
}
51+
5452
return metadata.GetString(fd.Name);
5553
case HandleKind.MethodDefinition:
5654
var md = metadata.GetMethodDefinition((MethodDefinitionHandle) handle);
@@ -61,21 +59,29 @@ public string GetEntityName(MetadataFile module, EntityHandle handle, bool fullN
6159
case ".ctor":
6260
case ".cctor":
6361
var td = metadata.GetTypeDefinition(declaringType);
64-
methodName = ReflectionHelper.SplitTypeParameterCountFromReflectionName(metadata.GetString(td.Name));
62+
methodName =
63+
ReflectionHelper.SplitTypeParameterCountFromReflectionName(metadata.GetString(td.Name));
6564
break;
6665
case "Finalize":
67-
const MethodAttributes finalizerAttributes = (MethodAttributes.Virtual | MethodAttributes.Family | MethodAttributes.HideBySig);
66+
const MethodAttributes finalizerAttributes = (MethodAttributes.Virtual |
67+
MethodAttributes.Family |
68+
MethodAttributes.HideBySig);
6869
if ((md.Attributes & finalizerAttributes) != finalizerAttributes)
6970
{
7071
goto default;
7172
}
72-
var methodSignature = md.DecodeSignature(MetadataExtensions.MinimalSignatureTypeProvider, default);
73+
74+
MethodSignature<IType> methodSignature =
75+
md.DecodeSignature(MetadataExtensions.MinimalSignatureTypeProvider, default);
7376
if (methodSignature.GenericParameterCount != 0 || methodSignature.ParameterTypes.Length != 0)
7477
{
7578
goto default;
7679
}
80+
7781
td = metadata.GetTypeDefinition(declaringType);
78-
methodName = "~" + ReflectionHelper.SplitTypeParameterCountFromReflectionName(metadata.GetString(td.Name));
82+
methodName = "~" +
83+
ReflectionHelper.SplitTypeParameterCountFromReflectionName(
84+
metadata.GetString(td.Name));
7985
break;
8086
default:
8187
var genericParams = md.GetGenericParameters();
@@ -106,19 +112,23 @@ public string GetEntityName(MetadataFile module, EntityHandle handle, bool fullN
106112
declaringType = metadata.GetMethodDefinition(ed.GetAccessors().GetAny()).GetDeclaringType();
107113
if (fullName && !declaringType.IsNil)
108114
{
109-
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." + metadata.GetString(ed.Name);
115+
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." +
116+
metadata.GetString(ed.Name);
110117
}
118+
111119
return metadata.GetString(ed.Name);
112120
case HandleKind.PropertyDefinition:
113121
var pd = metadata.GetPropertyDefinition((PropertyDefinitionHandle) handle);
114122
declaringType = metadata.GetMethodDefinition(pd.GetAccessors().GetAny()).GetDeclaringType();
115123
if (fullName && !declaringType.IsNil)
116124
{
117-
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." + metadata.GetString(pd.Name);
125+
return ToCSharpString(metadata, declaringType, fullName, omitGenerics) + "." +
126+
metadata.GetString(pd.Name);
118127
}
128+
119129
return metadata.GetString(pd.Name);
120130
default:
121-
return "";
131+
return null;
122132
}
123133
}
124134

@@ -127,6 +137,36 @@ public string GetTooltip(IEntity entity)
127137
return "";
128138
}
129139

140+
public string TypeToString(IType type,
141+
ConversionFlags conversionFlags = ConversionFlags.None | ConversionFlags.UseFullyQualifiedTypeNames |
142+
ConversionFlags.UseFullyQualifiedEntityNames)
143+
{
144+
if (type == null)
145+
throw new ArgumentNullException(nameof(type));
146+
var ambience = CreateAmbience();
147+
// Do not forget to update CSharpAmbienceTests.ILSpyMainTreeViewFlags, if this ever changes.
148+
ambience.ConversionFlags |= conversionFlags;
149+
if (type is ITypeDefinition definition)
150+
{
151+
return ambience.ConvertSymbol(definition);
152+
}
153+
else
154+
{
155+
return ambience.ConvertType(type);
156+
}
157+
}
158+
159+
public string EntityToString(IEntity entity, ConversionFlags conversionFlags)
160+
{
161+
// Do not forget to update CSharpAmbienceTests, if this ever changes.
162+
var ambience = CreateAmbience();
163+
ambience.ConversionFlags |= conversionFlags
164+
| ConversionFlags.ShowReturnType
165+
| ConversionFlags.ShowParameterList
166+
| ConversionFlags.ShowParameterModifiers;
167+
return ambience.ConvertSymbol(entity);
168+
}
169+
130170
public string MethodToString(IMethod method, bool includeDeclaringTypeName, bool includeNamespace, bool includeNamespaceOfDeclaringTypeName)
131171
{
132172
if (method == null)

backend/ILSpyX.Backend/ILSpyX.Backend.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
1818
</PropertyGroup>
1919
<ItemGroup>
20-
<PackageReference Include="GitVersion.MsBuild" Version="6.5.0">
20+
<PackageReference Include="GitVersion.MsBuild" Version="6.5.1">
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2222
<PrivateAssets>all</PrivateAssets>
2323
</PackageReference>
24-
<PackageReference Include="ICSharpCode.ILSpyX" Version="9.1.0.7988"/>
25-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0"/>
24+
<PackageReference Include="ICSharpCode.ILSpyX" Version="10.0.0.8282-preview2"/>
25+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.1"/>
2626
<PackageReference Include="Mono.Cecil" Version="0.11.6"/>
2727
<PackageReference Include="OmniSharp.Extensions.LanguageServer" Version="0.19.9"/>
2828
<PackageReference Include="Serilog" Version="4.3.0"/>
2929
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0"/>
3030
<PackageReference Include="Serilog.Sinks.Debug" Version="3.0.0"/>
31-
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0"/>
31+
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.1"/>
3232
</ItemGroup>
3333
</Project>

backend/ILSpyX.Backend/Search/SearchResultFactory.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
using System;
2020
using ICSharpCode.Decompiler.Metadata;
21+
using ICSharpCode.Decompiler.Output;
2122
using ICSharpCode.Decompiler.TypeSystem;
2223
using ICSharpCode.ILSpyX.Abstractions;
2324
using ICSharpCode.ILSpyX.Search;
@@ -61,15 +62,15 @@ string GetLanguageSpecificName(IEntity member)
6162
switch (member)
6263
{
6364
case ITypeDefinition t:
64-
return language.TypeToString(t, false);
65+
return language.TypeToString(t, ConversionFlags.None);
6566
case IField f:
66-
return language.FieldToString(f, true, false, false);
67+
return language.EntityToString(f, ConversionFlags.ShowDeclaringType);
6768
case IProperty p:
68-
return language.PropertyToString(p, true, false, false);
69+
return language.EntityToString(p, ConversionFlags.ShowDeclaringType);
6970
case IMethod m:
70-
return language.MethodToString(m, true, false, false);
71+
return language.EntityToString(m, ConversionFlags.ShowDeclaringType);
7172
case IEvent e:
72-
return language.EventToString(e, true, false, false);
73+
return language.EntityToString(e, ConversionFlags.ShowDeclaringType);
7374
default:
7475
throw new NotSupportedException(member?.GetType() + " not supported!");
7576
}
@@ -83,9 +84,13 @@ public MemberSearchResult Create(IEntity entity)
8384
Member = entity,
8485
Fitness = CalculateFitness(entity),
8586
Name = GetLanguageSpecificName(entity),
86-
Location = declaringType != null ? language.TypeToString(declaringType, includeNamespace: true) : entity.Namespace,
87-
Assembly = entity?.ParentModule?.MetadataFile?.FileName ?? "",
88-
ToolTip = entity?.ParentModule?.MetadataFile?.FileName,
87+
Location =
88+
declaringType != null
89+
? language.TypeToString(declaringType,
90+
ConversionFlags.UseFullyQualifiedEntityNames | ConversionFlags.UseFullyQualifiedTypeNames)
91+
: entity.Namespace,
92+
Assembly = entity.ParentModule?.FullAssemblyName ?? "",
93+
ToolTip = entity.ParentModule?.MetadataFile?.FileName ?? "",
8994
Image = new object(),
9095
LocationImage = new object(),
9196
AssemblyImage = new object(),

vscode-extension/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ All notable changes to the "ilspy-vscode" extension will be documented in this f
44

55
## 0.23
66

7+
- Upgrade to ICSharpCode.Decompiler 10.0 Preview 2 (see release notes for [ILSpy 10.0 Preview 2](https://github.com/icsharpcode/ILSpy/releases/tag/v10.0-preview2) to get more details)
78
- Support for analyzing NuGet packages (add to assembly tree, browse contents and bundled assemblies)
89
- Allow to drag&drop assembly files from outside into assembly tree, adding them to the list
910
- New ILSpy activity bar icon for our view containers (thanks to [@banditoth](https://github.com/banditoth) for the icon!)

0 commit comments

Comments
 (0)