From 0430c3b519e9c45f15dad85f7b98dd5c695f52f1 Mon Sep 17 00:00:00 2001 From: apmoskevitz Date: Mon, 23 Sep 2024 17:55:29 -0400 Subject: [PATCH] focus on CS8625, convert to error --- .editorconfig | 32 +++++++++---------- ICSharpCode.BamlDecompiler/BamlElement.cs | 10 +++--- .../Blocks/ConstructorParametersHandler.cs | 2 +- .../Handlers/Blocks/DocumentHandler.cs | 2 +- .../Handlers/Blocks/ElementHandler.cs | 2 +- .../Handlers/Blocks/KeyElementStartHandler.cs | 2 +- .../Handlers/Blocks/PropertyArrayHandler.cs | 2 +- .../Handlers/Blocks/PropertyComplexHandler.cs | 2 +- .../Blocks/PropertyDictionaryHandler.cs | 2 +- .../Handlers/Blocks/PropertyListHandler.cs | 2 +- .../Handlers/Records/AssemblyInfoHandler.cs | 2 +- .../Handlers/Records/AttributeInfoHandler.cs | 2 +- .../Handlers/Records/ConnectionIdHandler.cs | 2 +- .../ConstructorParameterTypeHandler.cs | 2 +- .../Records/ContentPropertyHandler.cs | 2 +- .../Handlers/Records/DefAttributeHandler.cs | 2 +- .../Records/DefAttributeKeyStringHandler.cs | 2 +- .../Records/DefAttributeKeyTypeHandler.cs | 2 +- .../Records/DeferableContentStartHandler.cs | 2 +- .../Records/LineNumberAndPositionHandler.cs | 2 +- .../Handlers/Records/LinePositionHandler.cs | 2 +- .../Handlers/Records/LiteralContentHandler.cs | 2 +- .../Records/OptimizedStaticResourceHandler.cs | 2 +- .../Handlers/Records/PIMappingHandler.cs | 2 +- .../PresentationOptionsAttributeHandler.cs | 2 +- .../Handlers/Records/PropertyCustomHandler.cs | 2 +- .../Handlers/Records/PropertyHandler.cs | 2 +- .../Records/PropertyTypeReferenceHandler.cs | 5 ++- .../Records/PropertyWithExtensionHandler.cs | 2 +- .../PropertyWithStaticResourceIdHandler.cs | 6 ++-- .../Records/StaticResourceIdHandler.cs | 6 ++-- .../Records/StaticResourceStartHandler.cs | 2 +- .../Handlers/Records/TextHandler.cs | 4 +-- .../Handlers/Records/TypeInfoHandler.cs | 4 +-- .../Handlers/Records/XmlnsPropertyHandler.cs | 2 +- ICSharpCode.BamlDecompiler/IHandlers.cs | 2 +- .../Rewrite/ConnectionIdRewritePass.cs | 2 +- .../Xaml/NamespaceMap.cs | 6 ++-- .../Xaml/XamlProperty.cs | 2 +- .../Xaml/XamlResourceKey.cs | 6 ++-- ICSharpCode.BamlDecompiler/Xaml/XamlType.cs | 4 +-- ICSharpCode.BamlDecompiler/XamlContext.cs | 9 +++--- ICSharpCode.BamlDecompiler/XmlnsDictionary.cs | 5 ++- .../GetDecompiledProjectCmdlet.cs | 2 +- .../Semantics/OverloadResolutionTests.cs | 2 +- .../CSharp/OutputVisitor/ITokenWriter.cs | 4 +-- .../InsertMissingTokensDecorator.cs | 2 +- .../InsertRequiredSpacesDecorator.cs | 2 +- .../OutputVisitor/InsertSpecialsDecorator.cs | 4 +-- .../OutputVisitor/TextWriterTokenWriter.cs | 2 +- .../CSharp/Resolver/AwaitResolveResult.cs | 8 ++--- .../CSharp/Resolver/CSharpConversions.cs | 8 ++--- .../CSharp/Resolver/CSharpResolver.cs | 6 ++-- .../CSharp/Resolver/LambdaResolveResult.cs | 4 +-- .../CSharp/Resolver/MemberLookup.cs | 8 ++--- .../Resolver/MethodGroupResolveResult.cs | 6 ++-- .../CSharp/Resolver/OverloadResolution.cs | 8 ++--- .../CSharp/Resolver/TypeInference.cs | 10 +++--- .../CSharp/SequencePointBuilder.cs | 2 +- .../CSharp/Syntax/CSharpTokenNode.cs | 2 +- .../Syntax/Expressions/IndexerExpression.cs | 2 +- .../CSharp/Syntax/PatternMatching/Match.cs | 8 ++--- ICSharpCode.Decompiler/CSharp/Syntax/Role.cs | 6 ++-- .../Transforms/ContextTrackingVisitor.cs | 6 ++-- .../CSharp/Transforms/DeclareVariables.cs | 2 +- .../Transforms/NormalizeBlockStatements.cs | 2 +- .../Transforms/PatternStatementTransform.cs | 2 +- .../CSharp/Transforms/PrettifyAssignments.cs | 2 +- .../ReplaceMethodCallsWithOperators.cs | 2 +- ...ransformFieldAndConstructorInitializers.cs | 4 +-- .../DebugInfo/ImportScopeInfo.cs | 2 +- .../Disassembler/MethodBodyDisassembler.cs | 2 +- .../Disassembler/OpCodeInfo.cs | 2 +- .../Disassembler/ReflectionDisassembler.cs | 10 +++--- .../FlowAnalysis/ControlFlowNode.cs | 8 ++--- .../ReachingDefinitionsVisitor.cs | 2 +- .../IL/ControlFlow/DetectPinnedRegions.cs | 2 +- .../IL/ControlFlow/SwitchAnalysis.cs | 2 +- .../IL/ControlFlow/SwitchDetection.cs | 8 ++--- .../IL/ControlFlow/YieldReturnDecompiler.cs | 14 ++++---- .../IL/Instructions/DeconstructInstruction.cs | 2 +- .../IL/Transforms/DeconstructionTransform.cs | 2 +- .../IL/Transforms/ILInlining.cs | 6 ++-- .../IL/Transforms/LockTransform.cs | 2 +- .../IL/Transforms/NullableLiftingTransform.cs | 2 +- .../IL/Transforms/ReduceNestingTransform.cs | 8 ++--- .../Transforms/TransformArrayInitializers.cs | 2 +- .../IL/Transforms/TransformAssignment.cs | 4 +-- .../Transforms/TransformDisplayClassUsage.cs | 14 ++++---- .../Metadata/LightJson/JsonValue.cs | 18 +++++------ .../Output/TextTokenWriter.cs | 2 +- ICSharpCode.Decompiler/SRMExtensions.cs | 4 +-- .../Semantics/InvocationResolveResult.cs | 2 +- .../TypeSystem/ApplyAttributeTypeVisitor.cs | 8 ++--- .../TypeSystem/FullTypeName.cs | 2 +- .../Implementation/GetMembersHelper.cs | 6 ++-- .../Implementation/MetadataNamespace.cs | 2 +- .../TypeSystem/Implementation/UnknownType.cs | 2 +- .../TypeSystem/TupleType.cs | 14 ++++---- .../Util/ResXResourceWriter.cs | 14 ++++---- ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs | 2 +- ILSpy.ReadyToRun/ReadyToRunDisassembler.cs | 16 +++++----- ILSpy.ReadyToRun/ReadyToRunLanguage.cs | 8 ++--- ILSpy.ReadyToRun/ReadyToRunOptions.cs | 18 +++++------ ILSpy/Commands/ShowCFGContextMenuEntry.cs | 2 +- ILSpy/Controls/SearchBox.cs | 2 +- ILSpy/Controls/TreeView/SharpTreeView.cs | 2 +- .../TreeView/SharpTreeViewTextSearch.cs | 2 +- ILSpy/DecompilationOptions.cs | 2 +- ILSpy/Docking/DockWorkspace.cs | 10 +++--- ILSpy/Docking/PaneCollection.cs | 2 +- ILSpy/Images/Images.cs | 4 +-- ILSpy/LanguageSettings.cs | 6 ++-- .../CSharpHighlightingTokenWriter.cs | 8 ++--- ILSpy/Languages/CSharpILMixedLanguage.cs | 4 +-- ILSpy/MainWindow.xaml.cs | 6 ++-- .../CorTables/ClassLayoutTableTreeNode.cs | 4 +-- .../CorTables/ConstantTableTreeNode.cs | 4 +-- .../CorTables/CustomAttributeTableTreeNode.cs | 8 ++--- .../CorTables/DeclSecurityTableTreeNode.cs | 4 +-- .../CorTables/EventMapTableTreeNode.cs | 8 ++--- .../Metadata/CorTables/EventTableTreeNode.cs | 4 +-- .../CorTables/ExportedTypeTableTreeNode.cs | 4 +-- .../CorTables/FieldLayoutTableTreeNode.cs | 4 +-- .../CorTables/FieldMarshalTableTreeNode.cs | 4 +-- .../CorTables/FieldRVATableTreeNode.cs | 4 +-- .../Metadata/CorTables/FieldTableTreeNode.cs | 4 +-- .../GenericParamConstraintTableTreeNode.cs | 8 ++--- .../CorTables/GenericParamTableTreeNode.cs | 4 +-- .../CorTables/ImplMapTableTreeNode.cs | 8 ++--- .../CorTables/InterfaceImplTableTreeNode.cs | 8 ++--- .../ManifestResourceTableTreeNode.cs | 4 +-- .../CorTables/MemberRefTableTreeNode.cs | 8 ++--- .../CorTables/MethodImplTableTreeNode.cs | 12 +++---- .../CorTables/MethodSemanticsTableTreeNode.cs | 8 ++--- .../CorTables/MethodSpecTableTreeNode.cs | 4 +-- .../Metadata/CorTables/MethodTableTreeNode.cs | 6 ++-- .../CorTables/NestedClassTableTreeNode.cs | 8 ++--- .../CorTables/PropertyMapTableTreeNode.cs | 8 ++--- .../CorTables/PropertyTableTreeNode.cs | 4 +-- ILSpy/Metadata/CorTables/PtrTableTreeNode.cs | 4 +-- .../CorTables/StandAloneSigTableTreeNode.cs | 4 +-- .../CorTables/TypeDefTableTreeNode.cs | 4 +-- .../CorTables/TypeRefTableTreeNode.cs | 4 +-- .../DebugTables/LocalScopeTableTreeNode.cs | 4 +-- .../StateMachineMethodTableTreeNode.cs | 8 ++--- ILSpy/Metadata/FlagsTooltip.xaml.cs | 10 +++--- ILSpy/Metadata/MetadataTableTreeNode.cs | 2 +- ILSpy/Metadata/MetadataTreeNode.cs | 4 +-- ILSpy/Options/MiscSettingsPanel.xaml.cs | 2 +- ILSpy/TaskHelper.cs | 6 ++-- ILSpy/TextView/BracketHighlightRenderer.cs | 4 +-- ILSpy/TextView/DocumentationUIBuilder.cs | 4 +-- ILSpy/TextView/UIElementGenerator.cs | 4 +-- ILSpy/TreeNodes/AssemblyTreeNode.cs | 6 ++-- ILSpy/TreeNodes/PackageFolderTreeNode.cs | 2 +- ILSpy/TreeNodes/ThreadingSupport.cs | 2 +- .../ManageAssemblyListsViewModel.cs | 6 ++-- 158 files changed, 378 insertions(+), 381 deletions(-) diff --git a/.editorconfig b/.editorconfig index 538d72491..6c1c8d12e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -151,9 +151,14 @@ dotnet_diagnostic.MEF006.severity = silent dotnet_diagnostic.IDE2003.severity = silent -#cleared null error types +#nullability diagnostics dotnet_diagnostic.CS8597.severity = error -dotnet_diagnostic.CS8605.severity = error +dotnet_diagnostic.CS8600.severity = warning +dotnet_diagnostic.CS8601.severity = warning +dotnet_diagnostic.CS8602.severity = warning +dotnet_diagnostic.CS8603.severity = warning +dotnet_diagnostic.CS8604.severity = warning +dotnet_diagnostic.CS8605.severity = warning dotnet_diagnostic.CS8606.severity = error dotnet_diagnostic.CS8607.severity = error dotnet_diagnostic.CS8608.severity = error @@ -164,9 +169,16 @@ dotnet_diagnostic.CS8612.severity = error dotnet_diagnostic.CS8613.severity = error dotnet_diagnostic.CS8614.severity = error dotnet_diagnostic.CS8615.severity = error +dotnet_diagnostic.CS8617.severity = warning +dotnet_diagnostic.CS8618.severity = warning +dotnet_diagnostic.CS8619.severity = warning +dotnet_diagnostic.CS8620.severity = warning dotnet_diagnostic.CS8621.severity = error dotnet_diagnostic.CS8622.severity = error dotnet_diagnostic.CS8624.severity = error +dotnet_diagnostic.CS8625.severity = error +dotnet_diagnostic.CS8629.severity = warning +dotnet_diagnostic.CS8631.severity = warning dotnet_diagnostic.CS8633.severity = error dotnet_diagnostic.CS8634.severity = error dotnet_diagnostic.CS8643.severity = error @@ -193,17 +205,5 @@ dotnet_diagnostic.CS8775.severity = error dotnet_diagnostic.CS8777.severity = error #nullable error types still not cleaned up -dotnet_diagnostic.CS8600.severity = warning -dotnet_diagnostic.CS8601.severity = warning -dotnet_diagnostic.CS8602.severity = warning -dotnet_diagnostic.CS8603.severity = warning -dotnet_diagnostic.CS8604.severity = warning -dotnet_diagnostic.CS8605.severity = warning -dotnet_diagnostic.CS8615.severity = warning -dotnet_diagnostic.CS8617.severity = warning -dotnet_diagnostic.CS8618.severity = warning -dotnet_diagnostic.CS8619.severity = warning -dotnet_diagnostic.CS8620.severity = warning -dotnet_diagnostic.CS8625.severity = warning -dotnet_diagnostic.CS8629.severity = warning -dotnet_diagnostic.CS8631.severity = warning + + diff --git a/ICSharpCode.BamlDecompiler/BamlElement.cs b/ICSharpCode.BamlDecompiler/BamlElement.cs index 0e546a474..7e2553b8c 100644 --- a/ICSharpCode.BamlDecompiler/BamlElement.cs +++ b/ICSharpCode.BamlDecompiler/BamlElement.cs @@ -41,13 +41,13 @@ namespace ICSharpCode.BamlDecompiler String = value; } - public readonly XElement Element; - public readonly string String; + public readonly XElement? Element; + public readonly string? String; public static implicit operator XamlNode(XElement value) => new XamlNode(value); public static implicit operator XamlNode(string value) => new XamlNode(value); - public static implicit operator XElement(XamlNode node) => node.Element; - public static implicit operator string(XamlNode node) => node.String; + public static implicit operator XElement?(XamlNode node) => node.Element; + public static implicit operator string?(XamlNode node) => node.String; } internal class BamlElement @@ -55,7 +55,7 @@ namespace ICSharpCode.BamlDecompiler public BamlNode Node { get; } public XamlNode Xaml { get; set; } - public BamlElement Parent { get; set; } + public BamlElement? Parent { get; set; } public IList Children { get; } public BamlElement(BamlNode node) diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/ConstructorParametersHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/ConstructorParametersHandler.cs index 844c82528..e204ab042 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/ConstructorParametersHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/ConstructorParametersHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.ConstructorParametersStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var doc = new BamlElement(node); doc.Xaml = new XElement(ctx.GetPseudoName("Ctor")); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/DocumentHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/DocumentHandler.cs index 8f543271f..347b61d6f 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/DocumentHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/DocumentHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.DocumentStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var doc = new BamlElement(node); doc.Xaml = new XElement(ctx.GetPseudoName("Document")); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/ElementHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/ElementHandler.cs index 351fbd388..49b8c3157 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/ElementHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/ElementHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.ElementStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (ElementStartRecord)((BamlBlockNode)node).Header; var doc = new BamlElement(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/KeyElementStartHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/KeyElementStartHandler.cs index 366b8d93a..80acd5df0 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/KeyElementStartHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/KeyElementStartHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { BamlRecordType IHandler.Type => BamlRecordType.KeyElementStart; - BamlElement IHandler.Translate(XamlContext ctx, BamlNode node, BamlElement parent) + BamlElement? IHandler.Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { XamlResourceKey.Create(node); return null; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyArrayHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyArrayHandler.cs index c4b20965f..b92fc9d8f 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyArrayHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyArrayHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyArrayStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyArrayStartRecord)((BamlBlockNode)node).Header; var doc = new BamlElement(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyComplexHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyComplexHandler.cs index e20ae0155..4560e8193 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyComplexHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyComplexHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyComplexStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyComplexStartRecord)((BamlBlockNode)node).Header; var doc = new BamlElement(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyDictionaryHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyDictionaryHandler.cs index 15a262680..084978475 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyDictionaryHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyDictionaryHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyDictionaryStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyDictionaryStartRecord)((BamlBlockNode)node).Header; var doc = new BamlElement(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyListHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyListHandler.cs index a7041d9cf..2f934399e 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyListHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Blocks/PropertyListHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyListStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyListStartRecord)((BamlBlockNode)node).Header; var doc = new BamlElement(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/AssemblyInfoHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/AssemblyInfoHandler.cs index 24c0dfe65..9ea3037bf 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/AssemblyInfoHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/AssemblyInfoHandler.cs @@ -28,6 +28,6 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.AssemblyInfo; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/AttributeInfoHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/AttributeInfoHandler.cs index bcada0571..690833c10 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/AttributeInfoHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/AttributeInfoHandler.cs @@ -28,6 +28,6 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.AttributeInfo; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/ConnectionIdHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/ConnectionIdHandler.cs index a0b9f9bb1..320f3f149 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/ConnectionIdHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/ConnectionIdHandler.cs @@ -28,7 +28,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.ConnectionId; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (ConnectionIdRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/ConstructorParameterTypeHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/ConstructorParameterTypeHandler.cs index a6ba8047e..cf0449e2c 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/ConstructorParameterTypeHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/ConstructorParameterTypeHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.ConstructorParameterType; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (ConstructorParameterTypeRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/ContentPropertyHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/ContentPropertyHandler.cs index 3f95e62de..7d53382c8 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/ContentPropertyHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/ContentPropertyHandler.cs @@ -28,7 +28,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.ContentProperty; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (ContentPropertyRecord)((BamlRecordNode)node).Record; // TODO: What to do here? diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeHandler.cs index f8ac9786e..01adead25 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.DefAttribute; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (DefAttributeRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyStringHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyStringHandler.cs index c8df69349..2ce607fa0 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyStringHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyStringHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.DefAttributeKeyString; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { XamlResourceKey.Create(node); return null; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyTypeHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyTypeHandler.cs index 82a2d82a0..e0689ff56 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyTypeHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/DefAttributeKeyTypeHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.DefAttributeKeyType; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { XamlResourceKey.Create(node); return null; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/DeferableContentStartHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/DeferableContentStartHandler.cs index 65385bf1c..179901713 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/DeferableContentStartHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/DeferableContentStartHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.DeferableContentStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (DeferableContentStartRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/LineNumberAndPositionHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/LineNumberAndPositionHandler.cs index 6398b2f3e..c79773805 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/LineNumberAndPositionHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/LineNumberAndPositionHandler.cs @@ -28,6 +28,6 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.LineNumberAndPosition; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/LinePositionHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/LinePositionHandler.cs index feb1c36aa..16e439df4 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/LinePositionHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/LinePositionHandler.cs @@ -28,6 +28,6 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.LinePosition; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/LiteralContentHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/LiteralContentHandler.cs index f53b3fd5f..f8b7ef25d 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/LiteralContentHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/LiteralContentHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.LiteralContent; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (LiteralContentRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/OptimizedStaticResourceHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/OptimizedStaticResourceHandler.cs index 520392349..15976101b 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/OptimizedStaticResourceHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/OptimizedStaticResourceHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.OptimizedStaticResource; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (OptimizedStaticResourceRecord)((BamlRecordNode)node).Record; var key = XamlResourceKey.FindKeyInSiblings(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PIMappingHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PIMappingHandler.cs index e32ba8a4e..f68bf73f4 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PIMappingHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PIMappingHandler.cs @@ -28,6 +28,6 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PIMapping; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PresentationOptionsAttributeHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PresentationOptionsAttributeHandler.cs index f4d13ebdb..0a584a614 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PresentationOptionsAttributeHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PresentationOptionsAttributeHandler.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PresentationOptionsAttribute; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PresentationOptionsAttributeRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyCustomHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyCustomHandler.cs index c62f2fa4a..0b01a5760 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyCustomHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyCustomHandler.cs @@ -179,7 +179,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers return property.IsAttachedTo(type); } - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyCustomRecord)((BamlRecordNode)node).Record; var serTypeId = ((short)record.SerializerTypeId & 0xfff); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyHandler.cs index e50002ceb..49e24a617 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public virtual BamlRecordType Type => BamlRecordType.Property; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyTypeReferenceHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyTypeReferenceHandler.cs index 9405d210d..5e24ae7c2 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyTypeReferenceHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyTypeReferenceHandler.cs @@ -22,10 +22,9 @@ using System.Xml.Linq; -using ICSharpCode.Decompiler.TypeSystem; - using ICSharpCode.BamlDecompiler.Baml; using ICSharpCode.BamlDecompiler.Xaml; +using ICSharpCode.Decompiler.TypeSystem; namespace ICSharpCode.BamlDecompiler.Handlers { @@ -33,7 +32,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyTypeReference; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyTypeReferenceRecord)((BamlRecordNode)node).Record; var attr = ctx.ResolveProperty(record.AttributeId); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithExtensionHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithExtensionHandler.cs index 034b6aac6..5515e0530 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithExtensionHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithExtensionHandler.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyWithExtension; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyWithExtensionRecord)((BamlRecordNode)node).Record; var extTypeId = ((short)record.Flags & 0xfff); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithStaticResourceIdHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithStaticResourceIdHandler.cs index a701316e9..3a2bbd756 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithStaticResourceIdHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/PropertyWithStaticResourceIdHandler.cs @@ -32,7 +32,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.PropertyWithStaticResourceId; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (PropertyWithStaticResourceIdRecord)((BamlRecordNode)node).Record; var doc = new BamlElement(node); @@ -43,8 +43,8 @@ namespace ICSharpCode.BamlDecompiler.Handlers doc.Xaml.Element.AddAnnotation(elemAttr); parent.Xaml.Element.Add(doc.Xaml.Element); - BamlNode found = node; - XamlResourceKey key; + BamlNode? found = node; + XamlResourceKey? key; do { key = XamlResourceKey.FindKeyInAncestors(found.Parent, out found); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs index b0f62432c..f5cbca319 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs @@ -27,12 +27,12 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.StaticResourceId; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (StaticResourceIdRecord)((BamlRecordNode)node).Record; - BamlNode found = node; - XamlResourceKey key; + BamlNode? found = node; + XamlResourceKey? key; do { key = XamlResourceKey.FindKeyInAncestors(found.Parent, out found); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs index 37857e14e..08fd3f7f8 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs @@ -29,7 +29,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.StaticResourceStart; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (StaticResourceStartRecord)((BamlBlockNode)node).Record; var key = XamlResourceKey.FindKeyInSiblings(node); diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/TextHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/TextHandler.cs index fc41caf5e..93ccce0a9 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/TextHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/TextHandler.cs @@ -28,7 +28,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.Text; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (TextRecord)((BamlRecordNode)node).Record; @@ -42,7 +42,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.TextWithId; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (TextWithIdRecord)((BamlRecordNode)node).Record; diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/TypeInfoHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/TypeInfoHandler.cs index 583c680d5..2e929ccfa 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/TypeInfoHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/TypeInfoHandler.cs @@ -28,13 +28,13 @@ namespace ICSharpCode.BamlDecompiler.Handlers { public BamlRecordType Type => BamlRecordType.TypeInfo; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } internal class TypeSerializerInfoHandler : IHandler { public BamlRecordType Type => BamlRecordType.TypeSerializerInfo; - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) => null; + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) => null; } } \ No newline at end of file diff --git a/ICSharpCode.BamlDecompiler/Handlers/Records/XmlnsPropertyHandler.cs b/ICSharpCode.BamlDecompiler/Handlers/Records/XmlnsPropertyHandler.cs index 399dd7d4d..1c5d5c48d 100644 --- a/ICSharpCode.BamlDecompiler/Handlers/Records/XmlnsPropertyHandler.cs +++ b/ICSharpCode.BamlDecompiler/Handlers/Records/XmlnsPropertyHandler.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.BamlDecompiler.Handlers } } - public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent) + public BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent) { var record = (XmlnsPropertyRecord)((BamlRecordNode)node).Record; foreach (var asmId in record.AssemblyIds) diff --git a/ICSharpCode.BamlDecompiler/IHandlers.cs b/ICSharpCode.BamlDecompiler/IHandlers.cs index c373f0bf2..067a9e173 100644 --- a/ICSharpCode.BamlDecompiler/IHandlers.cs +++ b/ICSharpCode.BamlDecompiler/IHandlers.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.BamlDecompiler internal interface IHandler { BamlRecordType Type { get; } - BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent); + BamlElement? Translate(XamlContext ctx, BamlNode node, BamlElement? parent); } internal interface IDeferHandler diff --git a/ICSharpCode.BamlDecompiler/Rewrite/ConnectionIdRewritePass.cs b/ICSharpCode.BamlDecompiler/Rewrite/ConnectionIdRewritePass.cs index 4c7a518fc..8a2280033 100644 --- a/ICSharpCode.BamlDecompiler/Rewrite/ConnectionIdRewritePass.cs +++ b/ICSharpCode.BamlDecompiler/Rewrite/ConnectionIdRewritePass.cs @@ -250,7 +250,7 @@ namespace ICSharpCode.BamlDecompiler.Rewrite } } - bool MatchFieldAssignment(ILInstruction inst, [NotNullWhen(true)] out FieldAssignment field) + bool MatchFieldAssignment(ILInstruction inst, [NotNullWhen(true)] out FieldAssignment? field) { field = null; if (!inst.MatchStFld(out _, out var fld, out var value) || !value.MatchCastClass(out var arg, out _) diff --git a/ICSharpCode.BamlDecompiler/Xaml/NamespaceMap.cs b/ICSharpCode.BamlDecompiler/Xaml/NamespaceMap.cs index 6523c2be7..19cc97234 100644 --- a/ICSharpCode.BamlDecompiler/Xaml/NamespaceMap.cs +++ b/ICSharpCode.BamlDecompiler/Xaml/NamespaceMap.cs @@ -29,17 +29,17 @@ namespace ICSharpCode.BamlDecompiler.Xaml { internal class NamespaceMap { - public string XmlnsPrefix { get; set; } + public string? XmlnsPrefix { get; set; } public string FullAssemblyName { get; set; } public string XMLNamespace { get; set; } - public string CLRNamespace { get; set; } + public string? CLRNamespace { get; set; } public NamespaceMap(string prefix, string fullAssemblyName, string xmlNs) : this(prefix, fullAssemblyName, xmlNs, null) { } - public NamespaceMap(string prefix, string fullAssemblyName, string xmlNs, string clrNs) + public NamespaceMap(string? prefix, string fullAssemblyName, string xmlNs, string? clrNs) { XmlnsPrefix = prefix; FullAssemblyName = fullAssemblyName; diff --git a/ICSharpCode.BamlDecompiler/Xaml/XamlProperty.cs b/ICSharpCode.BamlDecompiler/Xaml/XamlProperty.cs index 6372f2a0c..097f2f558 100644 --- a/ICSharpCode.BamlDecompiler/Xaml/XamlProperty.cs +++ b/ICSharpCode.BamlDecompiler/Xaml/XamlProperty.cs @@ -82,7 +82,7 @@ namespace ICSharpCode.BamlDecompiler.Xaml return true; } - public XName ToXName(XamlContext ctx, XElement parent, bool isFullName = true) + public XName ToXName(XamlContext ctx, XElement? parent, bool isFullName = true) { var typeName = DeclaringType.ToXName(ctx); XName name; diff --git a/ICSharpCode.BamlDecompiler/Xaml/XamlResourceKey.cs b/ICSharpCode.BamlDecompiler/Xaml/XamlResourceKey.cs index 7e642fd05..ba9cb583f 100644 --- a/ICSharpCode.BamlDecompiler/Xaml/XamlResourceKey.cs +++ b/ICSharpCode.BamlDecompiler/Xaml/XamlResourceKey.cs @@ -78,7 +78,7 @@ namespace ICSharpCode.BamlDecompiler.Xaml public BamlElement KeyElement { get; set; } public IList StaticResources { get; } - public static XamlResourceKey FindKeyInSiblings(BamlNode node) + public static XamlResourceKey? FindKeyInSiblings(BamlNode node) { var children = node.Parent.Children; var index = children.IndexOf(node); @@ -90,9 +90,9 @@ namespace ICSharpCode.BamlDecompiler.Xaml return null; } - public static XamlResourceKey FindKeyInAncestors(BamlNode node) => FindKeyInAncestors(node, out var found); + public static XamlResourceKey? FindKeyInAncestors(BamlNode node) => FindKeyInAncestors(node, out var found); - public static XamlResourceKey FindKeyInAncestors(BamlNode node, out BamlNode found) + public static XamlResourceKey? FindKeyInAncestors(BamlNode node, out BamlNode? found) { BamlNode n = node; do diff --git a/ICSharpCode.BamlDecompiler/Xaml/XamlType.cs b/ICSharpCode.BamlDecompiler/Xaml/XamlType.cs index 709e18c04..ca7dd2134 100644 --- a/ICSharpCode.BamlDecompiler/Xaml/XamlType.cs +++ b/ICSharpCode.BamlDecompiler/Xaml/XamlType.cs @@ -37,7 +37,7 @@ namespace ICSharpCode.BamlDecompiler.Xaml public string TypeNamespace { get; } public string TypeName { get; } - public XNamespace Namespace { get; private set; } + public XNamespace? Namespace { get; private set; } public IType ResolvedType { get; set; } public XamlType(IModule assembly, string fullAssemblyName, string ns, string name) @@ -45,7 +45,7 @@ namespace ICSharpCode.BamlDecompiler.Xaml { } - public XamlType(IModule assembly, string fullAssemblyName, string ns, string name, XNamespace xmlns) + public XamlType(IModule assembly, string fullAssemblyName, string ns, string name, XNamespace? xmlns) { Assembly = assembly; FullAssemblyName = fullAssemblyName; diff --git a/ICSharpCode.BamlDecompiler/XamlContext.cs b/ICSharpCode.BamlDecompiler/XamlContext.cs index 4558b13b3..a0f56f96a 100644 --- a/ICSharpCode.BamlDecompiler/XamlContext.cs +++ b/ICSharpCode.BamlDecompiler/XamlContext.cs @@ -27,10 +27,9 @@ using System.Reflection.Metadata; using System.Threading; using System.Xml.Linq; -using ICSharpCode.Decompiler.TypeSystem; - using ICSharpCode.BamlDecompiler.Baml; using ICSharpCode.BamlDecompiler.Xaml; +using ICSharpCode.Decompiler.TypeSystem; namespace ICSharpCode.BamlDecompiler { @@ -207,8 +206,8 @@ namespace ICSharpCode.BamlDecompiler continue; var xmlNs = attr.FixedArguments[0].Value as string; var typeNs = attr.FixedArguments[1].Value as string; - Debug.Assert((object)xmlNs != null && (object)typeNs != null); - if ((object)xmlNs == null || (object)typeNs == null) + Debug.Assert((object?)xmlNs != null && (object?)typeNs != null); + if ((object?)xmlNs == null || (object?)typeNs == null) continue; if (typeNamespace == typeNs) @@ -221,7 +220,7 @@ namespace ICSharpCode.BamlDecompiler return possibleXmlNs.FirstOrDefault(); } - public XName GetKnownNamespace(string name, string xmlNamespace, XElement context = null) + public XName GetKnownNamespace(string name, string xmlNamespace, XElement? context = null) { var xNs = GetXmlNamespace(xmlNamespace); XName xName; diff --git a/ICSharpCode.BamlDecompiler/XmlnsDictionary.cs b/ICSharpCode.BamlDecompiler/XmlnsDictionary.cs index 74f7f7f0d..ba4c1be60 100644 --- a/ICSharpCode.BamlDecompiler/XmlnsDictionary.cs +++ b/ICSharpCode.BamlDecompiler/XmlnsDictionary.cs @@ -22,11 +22,10 @@ using System.Collections.Generic; +using ICSharpCode.BamlDecompiler.Xaml; using ICSharpCode.Decompiler.Metadata; using ICSharpCode.Decompiler.TypeSystem; -using ICSharpCode.BamlDecompiler.Xaml; - namespace ICSharpCode.BamlDecompiler { internal class XmlnsScope : List @@ -58,7 +57,7 @@ namespace ICSharpCode.BamlDecompiler public XmlnsDictionary() => CurrentScope = null; - public XmlnsScope CurrentScope { get; set; } + public XmlnsScope? CurrentScope { get; set; } public void PushScope(BamlElement element) => CurrentScope = new XmlnsScope(CurrentScope, element); diff --git a/ICSharpCode.Decompiler.PowerShell/GetDecompiledProjectCmdlet.cs b/ICSharpCode.Decompiler.PowerShell/GetDecompiledProjectCmdlet.cs index e94175e80..7f395e166 100644 --- a/ICSharpCode.Decompiler.PowerShell/GetDecompiledProjectCmdlet.cs +++ b/ICSharpCode.Decompiler.PowerShell/GetDecompiledProjectCmdlet.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.Decompiler.PowerShell readonly object syncObject = new object(); int completed; string fileName; - ProgressRecord progress; + ProgressRecord? progress; public void Report(DecompilationProgress value) { diff --git a/ICSharpCode.Decompiler.Tests/Semantics/OverloadResolutionTests.cs b/ICSharpCode.Decompiler.Tests/Semantics/OverloadResolutionTests.cs index cabe83281..c36ba760a 100644 --- a/ICSharpCode.Decompiler.Tests/Semantics/OverloadResolutionTests.cs +++ b/ICSharpCode.Decompiler.Tests/Semantics/OverloadResolutionTests.cs @@ -258,7 +258,7 @@ namespace ICSharpCode.Decompiler.Tests.Semantics get { throw new NotImplementedException(); } } - public override IType GetInferredReturnType(IType[] parameterTypes) + public override IType GetInferredReturnType(IType[]? parameterTypes) { return inferredReturnType; } diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/ITokenWriter.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/ITokenWriter.cs index 9c8aa787e..539748931 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/ITokenWriter.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/ITokenWriter.cs @@ -46,7 +46,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor /// /// Writes a primitive/literal value /// - public abstract void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None); + public abstract void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None); public abstract void WritePrimitiveType(string type); @@ -129,7 +129,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor decoratedWriter.WriteToken(role, token); } - public override void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None) + public override void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None) { decoratedWriter.WritePrimitiveValue(value, format); } diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertMissingTokensDecorator.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertMissingTokensDecorator.cs index d115f7572..55c49cb69 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertMissingTokensDecorator.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertMissingTokensDecorator.cs @@ -138,7 +138,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor base.WriteIdentifier(identifier); } - public override void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None) + public override void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None) { Expression? node = nodes.Peek().LastOrDefault() as Expression; var startLocation = locationProvider.Location; diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertRequiredSpacesDecorator.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertRequiredSpacesDecorator.cs index 6da12dd60..70b90901b 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertRequiredSpacesDecorator.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertRequiredSpacesDecorator.cs @@ -148,7 +148,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor lastWritten = LastWritten.Whitespace; } - public override void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None) + public override void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None) { if (lastWritten == LastWritten.KeywordOrIdentifier) { diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertSpecialsDecorator.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertSpecialsDecorator.cs index b4d005143..de9850ec8 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertSpecialsDecorator.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/InsertSpecialsDecorator.cs @@ -82,7 +82,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor /// /// Writes all specials from start to end (exclusive). Does not touch the positionStack. /// - void WriteSpecials(AstNode start, AstNode end) + void WriteSpecials(AstNode start, AstNode? end) { for (AstNode? pos = start; pos != end; pos = pos.NextSibling) { @@ -118,7 +118,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor WriteSpecialsUpToRole(role, null); } - void WriteSpecialsUpToRole(Role role, AstNode nextNode) + void WriteSpecialsUpToRole(Role role, AstNode? nextNode) { if (positionStack.Count == 0) { diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/TextWriterTokenWriter.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/TextWriterTokenWriter.cs index 1862be080..4c2bbf8a6 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/TextWriterTokenWriter.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/TextWriterTokenWriter.cs @@ -233,7 +233,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor return writer.ToString(); } - public override void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None) + public override void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None) { if (value == null) { diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/AwaitResolveResult.cs b/ICSharpCode.Decompiler/CSharp/Resolver/AwaitResolveResult.cs index 71ea5810c..156fa14f3 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/AwaitResolveResult.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/AwaitResolveResult.cs @@ -42,20 +42,20 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver /// /// Property representing the IsCompleted property on the awaiter type. Can be null if the awaiter type or the property was not found, or when awaiting a dynamic expression. /// - public readonly IProperty IsCompletedProperty; + public readonly IProperty? IsCompletedProperty; /// /// Method representing the OnCompleted method on the awaiter type. Can be null if the awaiter type or the method was not found, or when awaiting a dynamic expression. /// This can also refer to an UnsafeOnCompleted method, if the awaiter type implements System.Runtime.CompilerServices.ICriticalNotifyCompletion. /// - public readonly IMethod OnCompletedMethod; + public readonly IMethod? OnCompletedMethod; /// /// Method representing the GetResult method on the awaiter type. Can be null if the awaiter type or the method was not found, or when awaiting a dynamic expression. /// - public readonly IMethod GetResultMethod; + public readonly IMethod? GetResultMethod; - public AwaitResolveResult(IType resultType, ResolveResult getAwaiterInvocation, IType awaiterType, IProperty isCompletedProperty, IMethod onCompletedMethod, IMethod getResultMethod) + public AwaitResolveResult(IType resultType, ResolveResult getAwaiterInvocation, IType awaiterType, IProperty? isCompletedProperty, IMethod? onCompletedMethod, IMethod? getResultMethod) : base(resultType) { if (awaiterType == null) diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs b/ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs index 9cfe6918d..af1612277 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs @@ -792,7 +792,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver #endregion #region Implicit Constant-Expression Conversion - bool ImplicitConstantExpressionConversion(ResolveResult rr, IType toType) + bool ImplicitConstantExpressionConversion(ResolveResult? rr, IType toType) { if (rr == null || !rr.IsCompileTimeConstant) return false; @@ -983,7 +983,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver return Conversion.UserDefinedConversion(selected[0].Method, isLifted: selected[0].IsLifted, isImplicit: isImplicit, isAmbiguous: true, conversionBeforeUserDefinedOperator: ExplicitConversion(source, mostSpecificSource), conversionAfterUserDefinedOperator: ExplicitConversion(mostSpecificTarget, target)); } - Conversion UserDefinedImplicitConversion(ResolveResult fromResult, IType fromType, IType toType) + Conversion UserDefinedImplicitConversion(ResolveResult? fromResult, IType fromType, IType toType) { // C# 4.0 spec §6.4.4 User-defined implicit conversions var operators = GetApplicableConversionOperators(fromResult, fromType, toType, false); @@ -1025,7 +1025,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver } } - Conversion UserDefinedExplicitConversion(ResolveResult fromResult, IType fromType, IType toType) + Conversion UserDefinedExplicitConversion(ResolveResult? fromResult, IType fromType, IType toType) { // C# 4.0 spec §6.4.5 User-defined explicit conversions var operators = GetApplicableConversionOperators(fromResult, fromType, toType, true); @@ -1112,7 +1112,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver return NullableType.GetUnderlyingType(type); } - List GetApplicableConversionOperators(ResolveResult fromResult, IType fromType, IType toType, bool isExplicit) + List GetApplicableConversionOperators(ResolveResult? fromResult, IType fromType, IType toType, bool isExplicit) { // Find the candidate operators: Predicate opFilter; diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs b/ICSharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs index 431cbdae0..a7197e22d 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs @@ -1712,7 +1712,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver return null; } - ResolveResult? LookInUsingScopeNamespace(ResolvedUsingScope usingScope, INamespace n, string identifier, IReadOnlyList typeArguments, bool parameterizeResultType) + ResolveResult? LookInUsingScopeNamespace(ResolvedUsingScope? usingScope, INamespace n, string identifier, IReadOnlyList typeArguments, bool parameterizeResultType) { if (n == null) return null; @@ -2222,7 +2222,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver #region ResolveInvocation - IList AddArgumentNamesIfNecessary(ResolveResult[] arguments, string[] argumentNames) + IList AddArgumentNamesIfNecessary(ResolveResult[] arguments, string[]? argumentNames) { if (argumentNames == null) { @@ -2239,7 +2239,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver } } - private ResolveResult ResolveInvocation(ResolveResult target, ResolveResult[] arguments, string[] argumentNames, bool allowOptionalParameters) + private ResolveResult ResolveInvocation(ResolveResult target, ResolveResult[] arguments, string[]? argumentNames, bool allowOptionalParameters) { // C# 4.0 spec: §7.6.5 diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/LambdaResolveResult.cs b/ICSharpCode.Decompiler/CSharp/Resolver/LambdaResolveResult.cs index 700695271..ca362f085 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/LambdaResolveResult.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/LambdaResolveResult.cs @@ -65,7 +65,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver /// This method determines the return type inferred from the lambda body, which is used as part of C# type inference. /// Use the property to retrieve the actual return type as determined by the target delegate type. /// - public abstract IType GetInferredReturnType(IType[] parameterTypes); + public abstract IType GetInferredReturnType(IType[]? parameterTypes); /// /// Gets the list of parameters. @@ -138,7 +138,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver public override ResolveResult Body { get; } - public override IType GetInferredReturnType(IType[] parameterTypes) + public override IType GetInferredReturnType(IType[]? parameterTypes) { // We don't know how to compute which type would be inferred if // given other parameter types. diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs b/ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs index b0a8f4ee8..6f85d1820 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs @@ -259,18 +259,18 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver public readonly IType DeclaringType; // When a nested type is hidden, it is simply removed from the list. - public List NestedTypes; + public List? NestedTypes; // When members are hidden, they are merely marked as hidden. // We still need to store the hidden methods so that the 'override' processing can // find them, so that it won't introduce the override as a new method. - public readonly List Methods; + public readonly List? Methods; public bool MethodsAreHidden; - public IMember NonMethod; + public IMember? NonMethod; public bool NonMethodIsHidden; - public LookupGroup(IType declaringType, List nestedTypes, List methods, IMember nonMethod) + public LookupGroup(IType declaringType, List? nestedTypes, List? methods, IMember? nonMethod) { this.DeclaringType = declaringType; this.NestedTypes = nestedTypes; diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/MethodGroupResolveResult.cs b/ICSharpCode.Decompiler/CSharp/Resolver/MethodGroupResolveResult.cs index 6c5542c94..05d136319 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/MethodGroupResolveResult.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/MethodGroupResolveResult.cs @@ -83,7 +83,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver readonly string methodName; public MethodGroupResolveResult(ResolveResult? targetResult, string methodName, - IReadOnlyList methods, IReadOnlyList typeArguments) + IReadOnlyList methods, IReadOnlyList? typeArguments) : base(SpecialType.NoType) { if (methods == null) @@ -143,10 +143,10 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver /// List of extension methods, used to avoid re-calculating it in ResolveInvocation() when it was already /// calculated by ResolveMemberAccess(). /// - internal List> extensionMethods; + internal List>? extensionMethods; // the resolver is used to fetch extension methods on demand - internal CSharpResolver resolver; + internal CSharpResolver? resolver; /// /// Gets all candidate extension methods. diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.Decompiler/CSharp/Resolver/OverloadResolution.cs index 311b66b67..d0f623152 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/OverloadResolution.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/OverloadResolution.cs @@ -130,7 +130,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver readonly CSharpConversions conversions; //List candidates = new List(); Candidate bestCandidate; - Candidate bestCandidateAmbiguousWith; + Candidate? bestCandidateAmbiguousWith; IType[] explicitlyGivenTypeArguments; bool bestCandidateWasValidated; OverloadResolutionErrors bestCandidateValidationResult; @@ -994,7 +994,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver return GetArgumentsWithConversions(null, GetBestCandidateWithSubstitutedTypeArguments()); } - IList GetArgumentsWithConversions(ResolveResult targetResolveResult, IParameterizedMember bestCandidateForNamedArguments) + IList GetArgumentsWithConversions(ResolveResult? targetResolveResult, IParameterizedMember? bestCandidateForNamedArguments) { var conversions = this.ArgumentConversions; ResolveResult[] args = new ResolveResult[arguments.Length]; @@ -1072,9 +1072,9 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver /// /// If not null, use this instead of the ReturnType of the member as the type of the created resolve result. /// - public CSharpInvocationResolveResult CreateResolveResult(ResolveResult targetResolveResult, IList? initializerStatements = null, IType? returnTypeOverride = null) + public CSharpInvocationResolveResult CreateResolveResult(ResolveResult? targetResolveResult, IList? initializerStatements = null, IType? returnTypeOverride = null) { - IParameterizedMember member = GetBestCandidateWithSubstitutedTypeArguments(); + IParameterizedMember? member = GetBestCandidateWithSubstitutedTypeArguments(); if (member == null) throw new InvalidOperationException(); diff --git a/ICSharpCode.Decompiler/CSharp/Resolver/TypeInference.cs b/ICSharpCode.Decompiler/CSharp/Resolver/TypeInference.cs index 3942c2d1e..bfd664dd3 100644 --- a/ICSharpCode.Decompiler/CSharp/Resolver/TypeInference.cs +++ b/ICSharpCode.Decompiler/CSharp/Resolver/TypeInference.cs @@ -94,11 +94,11 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver } #endregion - TP[] typeParameters; - IType[] parameterTypes; - ResolveResult[] arguments; - bool[,] dependencyMatrix; - IReadOnlyList classTypeArguments; + TP[]? typeParameters; + IType[]? parameterTypes; + ResolveResult[]? arguments; + bool[,]? dependencyMatrix; + IReadOnlyList? classTypeArguments; #region InferTypeArguments (main function) /// diff --git a/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs b/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs index 61186bb49..707b4f715 100644 --- a/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs @@ -76,7 +76,7 @@ namespace ICSharpCode.Decompiler.CSharp /// /// The function containing this sequence point. /// - internal ILFunction Function; + internal ILFunction? Function; public StatePerSequencePoint(AstNode primaryNode) { diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs b/ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs index 114ae9cb0..4a8eb2fc9 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs @@ -100,7 +100,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax } } - public CSharpTokenNode(TextLocation location, TokenRole role) + public CSharpTokenNode(TextLocation location, TokenRole? role) { this.startLocation = location; if (role != null) diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs b/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs index 43c5311d8..26f95c306 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs @@ -54,7 +54,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax { } - public IndexerExpression(Expression target, IEnumerable? arguments) + public IndexerExpression(Expression? target, IEnumerable? arguments) { AddChild(target, Roles.TargetExpression); if (arguments != null) diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/Match.cs b/ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/Match.cs index 70a4dbc97..3c08979cc 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/Match.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/Match.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching { // TODO: maybe we should add an implicit Match->bool conversion? (implicit operator bool(Match m) { return m != null; }) - List> results; + List>? results; public bool Success { get { return results != null; } @@ -36,7 +36,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching internal static Match CreateNew() { Match m; - m.results = new List>(); + m.results = new List>(); return m; } @@ -88,7 +88,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching { if (groupName != null && node != null) { - results.Add(new KeyValuePair(groupName, node)); + results.Add(new KeyValuePair(groupName, node)); } } @@ -96,7 +96,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching { if (groupName != null) { - results.Add(new KeyValuePair(groupName, null)); + results.Add(new KeyValuePair(groupName, null)); } } } diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/Role.cs b/ICSharpCode.Decompiler/CSharp/Syntax/Role.cs index 2411a2652..4c755579a 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/Role.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/Role.cs @@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax public class Role : Role where T : class? { readonly string name; // helps with debugging the AST - readonly T nullObject; + readonly T? nullObject; /// /// Gets the null object used when there's no node with this role. @@ -79,7 +79,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax /// Roles used for non-collections should always have a null object, so that no AST property returns null. /// However, if a role used for collections only, it may leave out the null object. /// - public T NullObject { + public T? NullObject { get { return nullObject; } } @@ -97,7 +97,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax this.nullObject = null!; } - public Role(string name, T nullObject) + public Role(string name, T? nullObject) { this.name = name ?? throw new ArgumentNullException(nameof(name)); this.nullObject = nullObject; diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/ContextTrackingVisitor.cs b/ICSharpCode.Decompiler/CSharp/Transforms/ContextTrackingVisitor.cs index 5f60b62f7..3346c3914 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/ContextTrackingVisitor.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/ContextTrackingVisitor.cs @@ -28,8 +28,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms /// public abstract class ContextTrackingVisitor : DepthFirstAstVisitor { - protected ITypeDefinition currentTypeDefinition; - protected IMethod currentMethod; + protected ITypeDefinition? currentTypeDefinition; + protected IMethod? currentMethod; protected void Initialize(TransformContext context) { @@ -45,7 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms public override TResult VisitTypeDeclaration(TypeDeclaration typeDeclaration) { - ITypeDefinition oldType = currentTypeDefinition; + ITypeDefinition? oldType = currentTypeDefinition; try { currentTypeDefinition = typeDeclaration.GetSymbol() as ITypeDefinition; diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/DeclareVariables.cs b/ICSharpCode.Decompiler/CSharp/Transforms/DeclareVariables.cs index b36e180a5..30fbeae6c 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/DeclareVariables.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/DeclareVariables.cs @@ -139,7 +139,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms } readonly Dictionary variableDict = new Dictionary(); - TransformContext context; + TransformContext? context; public void Run(AstNode rootNode, TransformContext context) { diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs b/ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs index 80d177a12..8371d0601 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs @@ -12,7 +12,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms { TransformContext context; bool hasNamespace; - NamespaceDeclaration singleNamespaceDeclaration; + NamespaceDeclaration? singleNamespaceDeclaration; public override void VisitSyntaxTree(SyntaxTree syntaxTree) { diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs b/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs index 5424ececc..72fcb5be9 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs @@ -35,7 +35,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms public sealed class PatternStatementTransform : ContextTrackingVisitor, IAstTransform { readonly DeclareVariables declareVariables = new DeclareVariables(); - TransformContext context; + TransformContext? context; public void Run(AstNode rootNode, TransformContext context) { diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/PrettifyAssignments.cs b/ICSharpCode.Decompiler/CSharp/Transforms/PrettifyAssignments.cs index ff1ed9e3e..649407a0e 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/PrettifyAssignments.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/PrettifyAssignments.cs @@ -39,7 +39,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms /// class PrettifyAssignments : DepthFirstAstVisitor, IAstTransform { - TransformContext context; + TransformContext? context; public override void VisitAssignmentExpression(AssignmentExpression assignment) { diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs b/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs index c1181a562..028acf8d0 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms MemberName = "TypeHandle" }; - TransformContext context; + TransformContext? context; public override void VisitInvocationExpression(InvocationExpression invocationExpression) { diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs b/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs index 96bafdb26..326551ddf 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs @@ -37,8 +37,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms /// public class TransformFieldAndConstructorInitializers : DepthFirstAstVisitor, IAstTransform { - TransformContext context; - Dictionary fieldToVariableMap; + TransformContext? context; + Dictionary? fieldToVariableMap; public void Run(AstNode node, TransformContext context) { diff --git a/ICSharpCode.Decompiler/DebugInfo/ImportScopeInfo.cs b/ICSharpCode.Decompiler/DebugInfo/ImportScopeInfo.cs index c6625350d..cd10e158c 100644 --- a/ICSharpCode.Decompiler/DebugInfo/ImportScopeInfo.cs +++ b/ICSharpCode.Decompiler/DebugInfo/ImportScopeInfo.cs @@ -23,7 +23,7 @@ namespace ICSharpCode.Decompiler.DebugInfo { class ImportScopeInfo { - public readonly ImportScopeInfo Parent; + public readonly ImportScopeInfo? Parent; public ImportScopeHandle Handle; public readonly HashSet Imports = new HashSet(); diff --git a/ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs b/ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs index fbbd5e6dd..e89afa56a 100644 --- a/ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs +++ b/ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs @@ -68,7 +68,7 @@ namespace ICSharpCode.Decompiler.Disassembler /// public IDebugInfoProvider DebugInfo { get; set; } - IList sequencePoints; + IList? sequencePoints; int nextSequencePointIndex; // cache info diff --git a/ICSharpCode.Decompiler/Disassembler/OpCodeInfo.cs b/ICSharpCode.Decompiler/Disassembler/OpCodeInfo.cs index a1748d780..8c2228f37 100644 --- a/ICSharpCode.Decompiler/Disassembler/OpCodeInfo.cs +++ b/ICSharpCode.Decompiler/Disassembler/OpCodeInfo.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.Decompiler.Disassembler public readonly ILOpCode Code; public readonly string Name; - string encodedName; + string? encodedName; public OpCodeInfo(ILOpCode code, string name) { diff --git a/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs b/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs index 9bec3d126..7d083b406 100644 --- a/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs +++ b/ICSharpCode.Decompiler/Disassembler/ReflectionDisassembler.cs @@ -1912,16 +1912,16 @@ namespace ICSharpCode.Decompiler.Disassembler } - sealed class EnumNameCollection : IEnumerable> where T : struct + sealed class EnumNameCollection : IEnumerable> where T : struct { - List> names = new List>(); + List> names = new List>(); - public void Add(T flag, string name) + public void Add(T flag, string? name) { - this.names.Add(new KeyValuePair(Convert.ToInt64(flag), name)); + this.names.Add(new KeyValuePair(Convert.ToInt64(flag), name)); } - public IEnumerator> GetEnumerator() + public IEnumerator> GetEnumerator() { return names.GetEnumerator(); } diff --git a/ICSharpCode.Decompiler/FlowAnalysis/ControlFlowNode.cs b/ICSharpCode.Decompiler/FlowAnalysis/ControlFlowNode.cs index 713fd360f..4dd360de5 100644 --- a/ICSharpCode.Decompiler/FlowAnalysis/ControlFlowNode.cs +++ b/ICSharpCode.Decompiler/FlowAnalysis/ControlFlowNode.cs @@ -38,7 +38,7 @@ namespace ICSharpCode.Decompiler.FlowAnalysis /// /// User data. /// - public object UserData; + public object? UserData; /// /// Visited flag, used in various algorithms. @@ -62,13 +62,13 @@ namespace ICSharpCode.Decompiler.FlowAnalysis /// Gets the immediate dominator (the parent in the dominator tree). /// Null if dominance has not been calculated; or if the node is unreachable. /// - public ControlFlowNode ImmediateDominator { get; internal set; } + public ControlFlowNode? ImmediateDominator { get; internal set; } /// /// List of children in the dominator tree. /// Null if dominance has not been calculated; or if the node is unreachable. /// - public List DominatorTreeChildren { get; internal set; } + public List? DominatorTreeChildren { get; internal set; } /// /// List of incoming control flow edges. @@ -120,7 +120,7 @@ namespace ICSharpCode.Decompiler.FlowAnalysis public bool Dominates(ControlFlowNode node) { // TODO: this can be made O(1) by numbering the dominator tree - ControlFlowNode tmp = node; + ControlFlowNode? tmp = node; while (tmp != null) { if (tmp == this) diff --git a/ICSharpCode.Decompiler/FlowAnalysis/ReachingDefinitionsVisitor.cs b/ICSharpCode.Decompiler/FlowAnalysis/ReachingDefinitionsVisitor.cs index 0f57fab07..1aba19e7a 100644 --- a/ICSharpCode.Decompiler/FlowAnalysis/ReachingDefinitionsVisitor.cs +++ b/ICSharpCode.Decompiler/FlowAnalysis/ReachingDefinitionsVisitor.cs @@ -331,7 +331,7 @@ namespace ICSharpCode.Decompiler.FlowAnalysis for (int vi = 0; vi < storesByVar.Length; vi++) { if (activeVariables[vi]) - storesByVar[vi] = new List { null }; + storesByVar[vi] = new List { null }; } foreach (var inst in scope.Descendants) { diff --git a/ICSharpCode.Decompiler/IL/ControlFlow/DetectPinnedRegions.cs b/ICSharpCode.Decompiler/IL/ControlFlow/DetectPinnedRegions.cs index a20a515fa..defe7bd6f 100644 --- a/ICSharpCode.Decompiler/IL/ControlFlow/DetectPinnedRegions.cs +++ b/ICSharpCode.Decompiler/IL/ControlFlow/DetectPinnedRegions.cs @@ -57,7 +57,7 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow /// public class DetectPinnedRegions : IILTransform { - ILTransformContext context; + ILTransformContext? context; public void Run(ILFunction function, ILTransformContext context) { diff --git a/ICSharpCode.Decompiler/IL/ControlFlow/SwitchAnalysis.cs b/ICSharpCode.Decompiler/IL/ControlFlow/SwitchAnalysis.cs index 42c0f668d..d319b975b 100644 --- a/ICSharpCode.Decompiler/IL/ControlFlow/SwitchAnalysis.cs +++ b/ICSharpCode.Decompiler/IL/ControlFlow/SwitchAnalysis.cs @@ -24,7 +24,7 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow /// The variable that is used to represent the switch expression. /// null while analyzing the first block. /// - ILVariable switchVar; + ILVariable? switchVar; /// /// The variable to be used as the argument of the switch instruction. diff --git a/ICSharpCode.Decompiler/IL/ControlFlow/SwitchDetection.cs b/ICSharpCode.Decompiler/IL/ControlFlow/SwitchDetection.cs index 2f0010516..e973c5b4d 100644 --- a/ICSharpCode.Decompiler/IL/ControlFlow/SwitchDetection.cs +++ b/ICSharpCode.Decompiler/IL/ControlFlow/SwitchDetection.cs @@ -38,10 +38,10 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow { private readonly SwitchAnalysis analysis = new SwitchAnalysis(); - private ILTransformContext context; - private BlockContainer currentContainer; - private ControlFlowGraph controlFlowGraph; - private LoopContext loopContext; + private ILTransformContext? context; + private BlockContainer? currentContainer; + private ControlFlowGraph? controlFlowGraph; + private LoopContext? loopContext; /// /// When detecting a switch, it is important to distinguish Branch instructions which will diff --git a/ICSharpCode.Decompiler/IL/ControlFlow/YieldReturnDecompiler.cs b/ICSharpCode.Decompiler/IL/ControlFlow/YieldReturnDecompiler.cs index a018bfe28..f24308444 100644 --- a/ICSharpCode.Decompiler/IL/ControlFlow/YieldReturnDecompiler.cs +++ b/ICSharpCode.Decompiler/IL/ControlFlow/YieldReturnDecompiler.cs @@ -73,15 +73,15 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow /// The field in the compiler-generated class holding the current state of the state machine /// Set in AnalyzeCtor() for MS, MatchEnumeratorCreationPattern() or AnalyzeMoveNext() for Mono - IField stateField; + IField? stateField; /// The backing field of the 'Current' property in the compiler-generated class /// Set in AnalyzeCurrentProperty() - IField currentField; + IField? currentField; /// The disposing field of the compiler-generated enumerator class. /// Set in ConstructExceptionTable() for assembly compiled with Mono - IField disposingField; + IField? disposingField; /// Maps the fields of the compiler-generated class to the original parameters. /// Set in MatchEnumeratorCreationPattern() and ResolveIEnumerableIEnumeratorFieldMapping() @@ -90,7 +90,7 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow /// This dictionary stores the information extracted from the Dispose() method: /// for each "Finally Method", it stores the set of states for which the method is being called. /// Set in ConstructExceptionTable() - Dictionary finallyMethodToStateRange; + Dictionary? finallyMethodToStateRange; /// /// For each finally method, stores the target state when entering the finally block, @@ -106,17 +106,17 @@ namespace ICSharpCode.Decompiler.IL.ControlFlow /// /// Local bool variable in MoveNext() that signifies whether to skip finally bodies. /// - ILVariable skipFinallyBodies; + ILVariable? skipFinallyBodies; /// /// Local bool variable in MoveNext() that signifies whether to execute finally bodies. /// - ILVariable doFinallyBodies; + ILVariable? doFinallyBodies; /// /// Set of variables might hold copies of the generated state field. /// - HashSet cachedStateVars; + HashSet? cachedStateVars; #region Run() method public void Run(ILFunction function, ILTransformContext context) diff --git a/ICSharpCode.Decompiler/IL/Instructions/DeconstructInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/DeconstructInstruction.cs index 055b91bc6..28fb6e394 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/DeconstructInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/DeconstructInstruction.cs @@ -211,7 +211,7 @@ namespace ICSharpCode.Decompiler.IL return input.MatchLdLoc(out inputVariable) || input.MatchLdLoca(out inputVariable); } - internal static bool IsAssignment(ILInstruction inst, ICompilation typeSystem, [NotNullWhen(true)] out IType? expectedType, [NotNullWhen(true)] out ILInstruction? value) + internal static bool IsAssignment(ILInstruction inst, ICompilation? typeSystem, [NotNullWhen(true)] out IType? expectedType, [NotNullWhen(true)] out ILInstruction? value) { expectedType = null; value = null; diff --git a/ICSharpCode.Decompiler/IL/Transforms/DeconstructionTransform.cs b/ICSharpCode.Decompiler/IL/Transforms/DeconstructionTransform.cs index 78181b4a7..9e7836ed8 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/DeconstructionTransform.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/DeconstructionTransform.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms /// class DeconstructionTransform : IStatementTransform { - StatementTransformContext context; + StatementTransformContext? context; readonly Dictionary deconstructionResultsLookup = new Dictionary(); ILVariable[]? deconstructionResults; ILVariable? tupleVariable; diff --git a/ICSharpCode.Decompiler/IL/Transforms/ILInlining.cs b/ICSharpCode.Decompiler/IL/Transforms/ILInlining.cs index bc4ccdf3b..bfcc4afec 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/ILInlining.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/ILInlining.cs @@ -741,10 +741,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms internal readonly struct FindResult { public readonly FindResultType Type; - public readonly ILInstruction LoadInst; // ldloc or ldloca instruction that loads the variable to be inlined - public readonly ILInstruction CallArgument; // argument of call that needs to be promoted to a named argument + public readonly ILInstruction? LoadInst; // ldloc or ldloca instruction that loads the variable to be inlined + public readonly ILInstruction? CallArgument; // argument of call that needs to be promoted to a named argument - private FindResult(FindResultType type, ILInstruction loadInst, ILInstruction callArg) + private FindResult(FindResultType type, ILInstruction? loadInst, ILInstruction? callArg) { this.Type = type; this.LoadInst = loadInst; diff --git a/ICSharpCode.Decompiler/IL/Transforms/LockTransform.cs b/ICSharpCode.Decompiler/IL/Transforms/LockTransform.cs index 2d3d54ac5..07a691282 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/LockTransform.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/LockTransform.cs @@ -294,7 +294,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms return true; } - bool MatchExitBlock(Block entryPoint, ILVariable flag, ILVariable obj) + bool MatchExitBlock(Block entryPoint, ILVariable? flag, ILVariable obj) { if (entryPoint.Instructions.Count != 2 || entryPoint.IncomingEdgeCount != 1) return false; diff --git a/ICSharpCode.Decompiler/IL/Transforms/NullableLiftingTransform.cs b/ICSharpCode.Decompiler/IL/Transforms/NullableLiftingTransform.cs index d721e08c9..bf4d45691 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/NullableLiftingTransform.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/NullableLiftingTransform.cs @@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms struct NullableLiftingTransform { readonly ILTransformContext context; - List nullableVars; + List? nullableVars; public NullableLiftingTransform(ILTransformContext context) { diff --git a/ICSharpCode.Decompiler/IL/Transforms/ReduceNestingTransform.cs b/ICSharpCode.Decompiler/IL/Transforms/ReduceNestingTransform.cs index d0a88b74c..b870bc10d 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/ReduceNestingTransform.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/ReduceNestingTransform.cs @@ -54,7 +54,7 @@ namespace ICSharpCode.Decompiler.IL } } - private void Visit(BlockContainer container, Block continueTarget) + private void Visit(BlockContainer container, Block? continueTarget) { switch (container.Kind) { @@ -84,7 +84,7 @@ namespace ICSharpCode.Decompiler.IL /// /// Marks the target block of continue statements. /// The instruction following the end point of the block. Can only be null if the end point is unreachable. - private void Visit(Block block, Block continueTarget, ILInstruction? nextInstruction = null) + private void Visit(Block block, Block? continueTarget, ILInstruction? nextInstruction = null) { Debug.Assert(block.HasFlag(InstructionFlags.EndPointUnreachable) || nextInstruction != null); @@ -174,7 +174,7 @@ namespace ICSharpCode.Decompiler.IL /// For an if statement with an unreachable end point and no else block, /// inverts to match IL order of the first statement of each branch /// - private void ImproveILOrdering(Block block, IfInstruction ifInst, Block continueTarget) + private void ImproveILOrdering(Block block, IfInstruction ifInst, Block? continueTarget) { if (!block.HasFlag(InstructionFlags.EndPointUnreachable) || !ifInst.TrueInst.HasFlag(InstructionFlags.EndPointUnreachable) @@ -368,7 +368,7 @@ namespace ICSharpCode.Decompiler.IL /// /// Checks if an exit is a duplicable keyword exit (return; break; continue;) /// - private bool CanDuplicateExit(ILInstruction exit, Block continueTarget, out ILInstruction keywordExit) + private bool CanDuplicateExit(ILInstruction exit, Block? continueTarget, out ILInstruction keywordExit) { keywordExit = exit; if (exit != null && exit.MatchBranch(continueTarget)) diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs index 665d64cd4..26dd639d6 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformArrayInitializers.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms /// public class TransformArrayInitializers : IStatementTransform { - StatementTransformContext context; + StatementTransformContext? context; void IStatementTransform.Run(Block block, int pos, StatementTransformContext context) { diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformAssignment.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformAssignment.cs index 4dd4c3399..75bbd4671 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformAssignment.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformAssignment.cs @@ -545,7 +545,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms return true; } - internal static bool IsImplicitTruncation(ILInstruction value, IType type, ICompilation compilation, bool allowNullableValue = false) + internal static bool IsImplicitTruncation(ILInstruction value, IType type, ICompilation? compilation, bool allowNullableValue = false) { return CheckImplicitTruncation(value, type, compilation, allowNullableValue) != ImplicitTruncationResult.ValuePreserved; } @@ -571,7 +571,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms /// Gets whether 'stobj type(..., value)' would evaluate to a different value than 'value' /// due to implicit truncation. /// - internal static ImplicitTruncationResult CheckImplicitTruncation(ILInstruction value, IType type, ICompilation compilation, bool allowNullableValue = false) + internal static ImplicitTruncationResult CheckImplicitTruncation(ILInstruction value, IType type, ICompilation? compilation, bool allowNullableValue = false) { if (!type.IsSmallIntegerType()) { diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs index 74bdd9c52..086f27c73 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms { private readonly DisplayClass container; private readonly IField field; - private ILVariable declaredVariable; + private ILVariable? declaredVariable; public string Name => field.Name; @@ -70,7 +70,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms Debug.Assert(declaredVariable == null || declaredVariable.StateMachineField == field); } - public void Propagate(ILVariable variable) + public void Propagate(ILVariable? variable) { this.declaredVariable = variable; this.CanPropagate = variable != null; @@ -94,8 +94,8 @@ namespace ICSharpCode.Decompiler.IL.Transforms public readonly ILVariable Variable; public readonly ITypeDefinition Type; public readonly Dictionary VariablesToDeclare; - public BlockContainer CaptureScope; - public ILInstruction Initializer; + public BlockContainer? CaptureScope; + public ILInstruction? Initializer; public DisplayClass(ILVariable variable, ITypeDefinition type) { @@ -105,8 +105,8 @@ namespace ICSharpCode.Decompiler.IL.Transforms } } - ILTransformContext context; - ITypeResolveContext decompilationContext; + ILTransformContext? context; + ITypeResolveContext? decompilationContext; readonly Dictionary displayClasses = new Dictionary(); readonly Dictionary displayClassCopyMap = new Dictionary(); @@ -502,7 +502,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms return code; } - VariableToDeclare AddVariable(DisplayClass result, StObj statement, IField field) + VariableToDeclare AddVariable(DisplayClass result, StObj? statement, IField field) { VariableToDeclare variable = new VariableToDeclare(result, field); if (statement != null) diff --git a/ICSharpCode.Decompiler/Metadata/LightJson/JsonValue.cs b/ICSharpCode.Decompiler/Metadata/LightJson/JsonValue.cs index ba52d003e..4fb65c955 100644 --- a/ICSharpCode.Decompiler/Metadata/LightJson/JsonValue.cs +++ b/ICSharpCode.Decompiler/Metadata/LightJson/JsonValue.cs @@ -24,7 +24,7 @@ namespace LightJson public static readonly JsonValue Null = new JsonValue(JsonValueType.Null, default(double), null); private readonly JsonValueType type; - private readonly object reference; + private readonly object? reference; private readonly double value; /// @@ -139,7 +139,7 @@ namespace LightJson /// The internal value reference of the JsonValue. /// This value is used when the Json type is String, JsonObject, or JsonArray. /// - private JsonValue(JsonValueType type, double value, object reference) + private JsonValue(JsonValueType type, double value, object? reference) { this.type = type; this.value = value; @@ -357,7 +357,7 @@ namespace LightJson public JsonObject? AsJsonObject { get { return this.IsJsonObject - ? (JsonObject)this.reference + ? (JsonObject?)this.reference : null; } } @@ -369,7 +369,7 @@ namespace LightJson public JsonArray? AsJsonArray { get { return this.IsJsonArray - ? (JsonArray)this.reference + ? (JsonArray?)this.reference : null; } } @@ -382,7 +382,7 @@ namespace LightJson get { DateTime value; - if (this.IsString && DateTime.TryParse((string)this.reference, out value)) + if (this.IsString && DateTime.TryParse((string?)this.reference, out value)) { return value; } @@ -427,7 +427,7 @@ namespace LightJson get { if (this.IsJsonObject) { - return ((JsonObject)this.reference)[key]; + return ((JsonObject?)this.reference)[key]; } else { @@ -438,7 +438,7 @@ namespace LightJson set { if (this.IsJsonObject) { - ((JsonObject)this.reference)[key] = value; + ((JsonObject?)this.reference)[key] = value; } else { @@ -458,7 +458,7 @@ namespace LightJson get { if (this.IsJsonArray) { - return ((JsonArray)this.reference)[index]; + return ((JsonArray?)this.reference)[index]; } else { @@ -469,7 +469,7 @@ namespace LightJson set { if (this.IsJsonArray) { - ((JsonArray)this.reference)[index] = value; + ((JsonArray?)this.reference)[index] = value; } else { diff --git a/ICSharpCode.Decompiler/Output/TextTokenWriter.cs b/ICSharpCode.Decompiler/Output/TextTokenWriter.cs index eb0a446af..fbb14dc56 100644 --- a/ICSharpCode.Decompiler/Output/TextTokenWriter.cs +++ b/ICSharpCode.Decompiler/Output/TextTokenWriter.cs @@ -363,7 +363,7 @@ namespace ICSharpCode.Decompiler output.WriteLine(); } - public override void WritePrimitiveValue(object value, LiteralFormat format = LiteralFormat.None) + public override void WritePrimitiveValue(object? value, LiteralFormat format = LiteralFormat.None) { new TextWriterTokenWriter(new TextOutputWriter(output)).WritePrimitiveValue(value, format); } diff --git a/ICSharpCode.Decompiler/SRMExtensions.cs b/ICSharpCode.Decompiler/SRMExtensions.cs index 1b4a82aa6..6b12228cb 100644 --- a/ICSharpCode.Decompiler/SRMExtensions.cs +++ b/ICSharpCode.Decompiler/SRMExtensions.cs @@ -628,7 +628,7 @@ namespace ICSharpCode.Decompiler #endregion public static unsafe BlobReader GetInitialValue(this FieldDefinition field, MetadataFile pefile, - ICompilation typeSystem) + ICompilation? typeSystem) { if (!field.HasFlag(FieldAttributes.HasFieldRVA)) return default; @@ -647,7 +647,7 @@ namespace ICSharpCode.Decompiler sealed class FieldValueSizeDecoder : ISignatureTypeProvider { - readonly MetadataModule module; + readonly MetadataModule? module; readonly int pointerSize; public FieldValueSizeDecoder(ICompilation? typeSystem = null) diff --git a/ICSharpCode.Decompiler/Semantics/InvocationResolveResult.cs b/ICSharpCode.Decompiler/Semantics/InvocationResolveResult.cs index 551f92605..69ebb8cd7 100644 --- a/ICSharpCode.Decompiler/Semantics/InvocationResolveResult.cs +++ b/ICSharpCode.Decompiler/Semantics/InvocationResolveResult.cs @@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.Semantics /// public readonly IList InitializerStatements; - public InvocationResolveResult(ResolveResult targetResult, IParameterizedMember member, + public InvocationResolveResult(ResolveResult? targetResult, IParameterizedMember member, IList? arguments = null, IList? initializerStatements = null, IType? returnTypeOverride = null) diff --git a/ICSharpCode.Decompiler/TypeSystem/ApplyAttributeTypeVisitor.cs b/ICSharpCode.Decompiler/TypeSystem/ApplyAttributeTypeVisitor.cs index 53dd7dea9..971ea2263 100644 --- a/ICSharpCode.Decompiler/TypeSystem/ApplyAttributeTypeVisitor.cs +++ b/ICSharpCode.Decompiler/TypeSystem/ApplyAttributeTypeVisitor.cs @@ -175,11 +175,11 @@ namespace ICSharpCode.Decompiler.TypeSystem readonly bool hasDynamicAttribute; readonly bool[] dynamicAttributeData; readonly bool hasNativeIntegersAttribute; - readonly bool[] nativeIntegersAttributeData; + readonly bool[]? nativeIntegersAttributeData; readonly TypeSystemOptions options; readonly string[] tupleElementNames; readonly Nullability defaultNullability; - readonly Nullability[] nullableAttributeData; + readonly Nullability[]? nullableAttributeData; int dynamicTypeIndex = 0; int tupleTypeIndex = 0; int nullabilityTypeIndex = 0; @@ -187,9 +187,9 @@ namespace ICSharpCode.Decompiler.TypeSystem private ApplyAttributeTypeVisitor(ICompilation compilation, bool hasDynamicAttribute, bool[] dynamicAttributeData, - bool hasNativeIntegersAttribute, bool[] nativeIntegersAttributeData, + bool hasNativeIntegersAttribute, bool[]? nativeIntegersAttributeData, TypeSystemOptions options, string[] tupleElementNames, - Nullability defaultNullability, Nullability[] nullableAttributeData) + Nullability defaultNullability, Nullability[]? nullableAttributeData) { this.compilation = compilation ?? throw new ArgumentNullException(nameof(compilation)); this.hasDynamicAttribute = hasDynamicAttribute; diff --git a/ICSharpCode.Decompiler/TypeSystem/FullTypeName.cs b/ICSharpCode.Decompiler/TypeSystem/FullTypeName.cs index 74701a6ed..fec605b9d 100644 --- a/ICSharpCode.Decompiler/TypeSystem/FullTypeName.cs +++ b/ICSharpCode.Decompiler/TypeSystem/FullTypeName.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.Decompiler.TypeSystem } readonly TopLevelTypeName topLevelType; - readonly NestedTypeName[] nestedTypes; + readonly NestedTypeName[]? nestedTypes; FullTypeName(TopLevelTypeName topLevelTypeName, NestedTypeName[] nestedTypes) { diff --git a/ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs b/ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs index 285403b71..a4cea68c6 100644 --- a/ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs +++ b/ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation return GetNestedTypes(type, null, filter, options); } - public static IEnumerable GetNestedTypes(IType type, IReadOnlyList nestedTypeArguments, Predicate filter, GetMemberOptions options) + public static IEnumerable GetNestedTypes(IType type, IReadOnlyList? nestedTypeArguments, Predicate filter, GetMemberOptions options) { if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) { @@ -53,9 +53,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation } } - static IEnumerable GetNestedTypesImpl(IType outerType, IReadOnlyList nestedTypeArguments, Predicate filter, GetMemberOptions options) + static IEnumerable GetNestedTypesImpl(IType outerType, IReadOnlyList? nestedTypeArguments, Predicate? filter, GetMemberOptions options) { - ITypeDefinition outerTypeDef = outerType.GetDefinition(); + ITypeDefinition? outerTypeDef = outerType.GetDefinition(); if (outerTypeDef == null) yield break; diff --git a/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataNamespace.cs b/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataNamespace.cs index 729d1e5ba..9a2271358 100644 --- a/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataNamespace.cs +++ b/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataNamespace.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation public string FullName { get; } public string Name { get; } - public MetadataNamespace(MetadataModule module, INamespace parent, string fullName, NamespaceDefinition ns) + public MetadataNamespace(MetadataModule module, INamespace? parent, string fullName, NamespaceDefinition ns) { Debug.Assert(module != null); Debug.Assert(fullName != null); diff --git a/ICSharpCode.Decompiler/TypeSystem/Implementation/UnknownType.cs b/ICSharpCode.Decompiler/TypeSystem/Implementation/UnknownType.cs index 88e0b57a6..c3c74d80f 100644 --- a/ICSharpCode.Decompiler/TypeSystem/Implementation/UnknownType.cs +++ b/ICSharpCode.Decompiler/TypeSystem/Implementation/UnknownType.cs @@ -38,7 +38,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation /// Namespace name, if known. Can be null if unknown. /// Name of the type, must not be null. /// Type parameter count, zero if unknown. - public UnknownType(string namespaceName, string name, int typeParameterCount = 0, bool? isReferenceType = null) + public UnknownType(string? namespaceName, string name, int typeParameterCount = 0, bool? isReferenceType = null) { if (name == null) throw new ArgumentNullException(nameof(name)); diff --git a/ICSharpCode.Decompiler/TypeSystem/TupleType.cs b/ICSharpCode.Decompiler/TypeSystem/TupleType.cs index 59f1d4b4b..0ddee615d 100644 --- a/ICSharpCode.Decompiler/TypeSystem/TupleType.cs +++ b/ICSharpCode.Decompiler/TypeSystem/TupleType.cs @@ -53,10 +53,10 @@ namespace ICSharpCode.Decompiler.TypeSystem /// /// Gets the names of the tuple elements. /// - public ImmutableArray ElementNames { get; } + public ImmutableArray ElementNames { get; } public TupleType(ICompilation compilation, ImmutableArray elementTypes, - ImmutableArray elementNames = default(ImmutableArray), + ImmutableArray elementNames = default(ImmutableArray), IModule? valueTupleAssembly = null) { this.Compilation = compilation; @@ -64,7 +64,7 @@ namespace ICSharpCode.Decompiler.TypeSystem this.ElementTypes = elementTypes; if (elementNames.IsDefault) { - this.ElementNames = Enumerable.Repeat(null, elementTypes.Length).ToImmutableArray(); + this.ElementNames = Enumerable.Repeat(null, elementTypes.Length).ToImmutableArray(); } else { @@ -73,7 +73,7 @@ namespace ICSharpCode.Decompiler.TypeSystem } } - static ParameterizedType CreateUnderlyingType(ICompilation compilation, ImmutableArray elementTypes, IModule valueTupleAssembly) + static ParameterizedType CreateUnderlyingType(ICompilation compilation, ImmutableArray elementTypes, IModule? valueTupleAssembly) { int remainder = (elementTypes.Length - 1) % (RestPosition - 1) + 1; Debug.Assert(remainder >= 1 && remainder < RestPosition); @@ -92,7 +92,7 @@ namespace ICSharpCode.Decompiler.TypeSystem return type; } - private static IType FindValueTupleType(ICompilation compilation, IModule valueTupleAssembly, int tpc) + private static IType FindValueTupleType(ICompilation compilation, IModule? valueTupleAssembly, int tpc) { var typeName = new TopLevelTypeName("System", "ValueTuple", tpc); if (valueTupleAssembly != null) @@ -236,7 +236,7 @@ namespace ICSharpCode.Decompiler.TypeSystem unchecked { int hash = UnderlyingType.GetHashCode(); - foreach (string name in ElementNames) + foreach (string? name in ElementNames) { hash *= 31; hash += name != null ? name.GetHashCode() : 0; @@ -387,7 +387,7 @@ namespace ICSharpCode.Decompiler.TypeSystem /// public ImmutableArray ElementNames { get; } - public IModuleReference ValueTupleAssembly { get; } + public IModuleReference? ValueTupleAssembly { get; } public TupleTypeReference(ImmutableArray elementTypes) { diff --git a/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs b/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs index 7d18ef551..d8795da63 100644 --- a/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs +++ b/ICSharpCode.Decompiler/Util/ResXResourceWriter.cs @@ -45,12 +45,12 @@ namespace ICSharpCode.Decompiler.Util #endif class ResXResourceWriter : IDisposable { - private string filename; - private Stream stream; - private TextWriter textwriter; - private XmlTextWriter writer; + private string? filename; + private Stream? stream; + private TextWriter? textwriter; + private XmlTextWriter? writer; private bool written; - private string base_path; + private string? base_path; public static readonly string BinSerializedObjectMimeType = "application/x-microsoft.net.object.binary.base64"; public static readonly string ByteArraySerializedObjectMimeType = "application/x-microsoft.net.object.bytearray.base64"; @@ -131,7 +131,7 @@ namespace ICSharpCode.Decompiler.Util writer.WriteString(base64); } - void WriteBytes(string name, string type, byte[] value, int offset, int length, string comment) + void WriteBytes(string name, string? type, byte[] value, int offset, int length, string comment) { writer.WriteStartElement("data"); writer.WriteAttributeString("name", name); @@ -165,7 +165,7 @@ namespace ICSharpCode.Decompiler.Util writer.WriteEndElement(); } - void WriteString(string name, string value, string type, string comment) + void WriteString(string name, string value, string? type, string comment) { writer.WriteStartElement("data"); writer.WriteAttributeString("name", name); diff --git a/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs b/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs index 8cc359925..605e5bd94 100644 --- a/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs +++ b/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs @@ -317,7 +317,7 @@ Examples: return decompiler.DecompileProject(module, Path.GetDirectoryName(projectFileName), projectFileWriter); } - int Decompile(string assemblyFileName, TextWriter output, string typeName = null) + int Decompile(string assemblyFileName, TextWriter output, string? typeName = null) { CSharpDecompiler decompiler = GetDecompiler(assemblyFileName); diff --git a/ILSpy.ReadyToRun/ReadyToRunDisassembler.cs b/ILSpy.ReadyToRun/ReadyToRunDisassembler.cs index 6cd03c558..564922d1b 100644 --- a/ILSpy.ReadyToRun/ReadyToRunDisassembler.cs +++ b/ILSpy.ReadyToRun/ReadyToRunDisassembler.cs @@ -171,10 +171,10 @@ namespace ICSharpCode.ILSpy.ReadyToRun output.WriteLine(); } - private void DecorateGCInfo(Instruction instr, ulong baseInstrIP, BaseGcInfo gcInfo) + private void DecorateGCInfo(Instruction instr, ulong baseInstrIP, BaseGcInfo? gcInfo) { ulong codeOffset = instr.IP - baseInstrIP; - if (gcInfo != null && gcInfo.Transitions != null && gcInfo.Transitions.TryGetValue((int)codeOffset, out List transitionsForOffset)) + if (gcInfo != null && gcInfo.Transitions != null && gcInfo.Transitions.TryGetValue((int)codeOffset, out List? transitionsForOffset)) { // this value comes from a manual count of the spaces used for each instruction in Disassemble() string indent = new string(' ', 36); @@ -192,17 +192,17 @@ namespace ICSharpCode.ILSpy.ReadyToRun private class NativeVarInfoRecord { - public ulong codeOffset; - public bool isStart; - public bool isRegRelative; - public string register; + public required ulong codeOffset; + public required bool isStart; + public required bool isRegRelative; + public required string register; public int registerOffset; - public Variable variable; + public required Variable variable; } private class DebugInfoHelper { - public List records; + public List? records; public int i; public Dictionary>> registerRelativeVariables; public Dictionary> registerVariables; diff --git a/ILSpy.ReadyToRun/ReadyToRunLanguage.cs b/ILSpy.ReadyToRun/ReadyToRunLanguage.cs index a963dee76..75cbeba08 100644 --- a/ILSpy.ReadyToRun/ReadyToRunLanguage.cs +++ b/ILSpy.ReadyToRun/ReadyToRunLanguage.cs @@ -307,10 +307,10 @@ namespace ICSharpCode.ILSpy.ReadyToRun private class ReadyToRunReaderCacheEntry { - public ReadyToRunReader readyToRunReader; - public ReadyToRunReader compositeReadyToRunReader; - public string failureReason; - public Dictionary methodMap; + public ReadyToRunReader? readyToRunReader; + public ReadyToRunReader? compositeReadyToRunReader; + public string? failureReason; + public Dictionary? methodMap; } } } diff --git a/ILSpy.ReadyToRun/ReadyToRunOptions.cs b/ILSpy.ReadyToRun/ReadyToRunOptions.cs index 365d1dd9a..5e65b574a 100644 --- a/ILSpy.ReadyToRun/ReadyToRunOptions.cs +++ b/ILSpy.ReadyToRun/ReadyToRunOptions.cs @@ -31,14 +31,14 @@ namespace ICSharpCode.ILSpy.ReadyToRun internal static string gas = "AT & T"; internal static string[] disassemblyFormats = new string[] { intel, gas }; - public static string GetDisassemblyFormat(ILSpySettings settings) + public static string GetDisassemblyFormat(ILSpySettings? settings) { if (settings == null) { settings = ILSpySettings.Load(); } XElement e = settings[ns + "ReadyToRunOptions"]; - XAttribute a = e.Attribute("DisassemblyFormat"); + XAttribute? a = e.Attribute("DisassemblyFormat"); if (a == null) { return ReadyToRunOptions.intel; @@ -49,14 +49,14 @@ namespace ICSharpCode.ILSpy.ReadyToRun } } - public static bool GetIsShowUnwindInfo(ILSpySettings settings) + public static bool GetIsShowUnwindInfo(ILSpySettings? settings) { if (settings == null) { settings = ILSpySettings.Load(); } XElement e = settings[ns + "ReadyToRunOptions"]; - XAttribute a = e.Attribute("IsShowUnwindInfo"); + XAttribute? a = e.Attribute("IsShowUnwindInfo"); if (a == null) { @@ -68,14 +68,14 @@ namespace ICSharpCode.ILSpy.ReadyToRun } } - public static bool GetIsShowDebugInfo(ILSpySettings settings) + public static bool GetIsShowDebugInfo(ILSpySettings? settings) { if (settings == null) { settings = ILSpySettings.Load(); } XElement e = settings[ns + "ReadyToRunOptions"]; - XAttribute a = e.Attribute("IsShowDebugInfo"); + XAttribute? a = e.Attribute("IsShowDebugInfo"); if (a == null) { @@ -87,14 +87,14 @@ namespace ICSharpCode.ILSpy.ReadyToRun } } - public static bool GetIsShowGCInfo(ILSpySettings settings) + public static bool GetIsShowGCInfo(ILSpySettings? settings) { if (settings == null) { settings = ILSpySettings.Load(); } XElement e = settings[ns + "ReadyToRunOptions"]; - XAttribute a = e.Attribute("IsShowGCInfo"); + XAttribute? a = e.Attribute("IsShowGCInfo"); if (a == null) { @@ -113,7 +113,7 @@ namespace ICSharpCode.ILSpy.ReadyToRun section.SetAttributeValue("IsShowUnwindInfo", isShowUnwindInfo); section.SetAttributeValue("IsShowDebugInfo", isShowDebugInfo); section.SetAttributeValue("IsShowGCInfo", isShowGCInfo); - XElement existingElement = root.Element(ns + "ReadyToRunOptions"); + XElement? existingElement = root.Element(ns + "ReadyToRunOptions"); if (existingElement != null) { existingElement.ReplaceWith(section); diff --git a/ILSpy/Commands/ShowCFGContextMenuEntry.cs b/ILSpy/Commands/ShowCFGContextMenuEntry.cs index b4e8be003..9ff313da7 100644 --- a/ILSpy/Commands/ShowCFGContextMenuEntry.cs +++ b/ILSpy/Commands/ShowCFGContextMenuEntry.cs @@ -39,7 +39,7 @@ namespace ICSharpCode.ILSpy.Commands return context.Reference?.Reference is BlockContainer; } - internal static GraphVizGraph ExportGraph(IReadOnlyList nodes, Func labelFunc = null) + internal static GraphVizGraph ExportGraph(IReadOnlyList nodes, Func? labelFunc = null) { if (labelFunc == null) { diff --git a/ILSpy/Controls/SearchBox.cs b/ILSpy/Controls/SearchBox.cs index f07dc24c1..5c701652b 100644 --- a/ILSpy/Controls/SearchBox.cs +++ b/ILSpy/Controls/SearchBox.cs @@ -84,7 +84,7 @@ namespace ICSharpCode.ILSpy.Controls #region Overrides - DispatcherTimer timer; + DispatcherTimer? timer; protected override void OnTextChanged(TextChangedEventArgs e) { diff --git a/ILSpy/Controls/TreeView/SharpTreeView.cs b/ILSpy/Controls/TreeView/SharpTreeView.cs index e8a76208c..7ca753759 100644 --- a/ILSpy/Controls/TreeView/SharpTreeView.cs +++ b/ILSpy/Controls/TreeView/SharpTreeView.cs @@ -655,7 +655,7 @@ namespace ICSharpCode.ILSpy.Controls.TreeView } } - SharpTreeNodeView previewNodeView; + SharpTreeNodeView? previewNodeView; InsertMarker insertMarker; DropPlace previewPlace; diff --git a/ILSpy/Controls/TreeView/SharpTreeViewTextSearch.cs b/ILSpy/Controls/TreeView/SharpTreeViewTextSearch.cs index 5b14ebc6f..19532e66f 100644 --- a/ILSpy/Controls/TreeView/SharpTreeViewTextSearch.cs +++ b/ILSpy/Controls/TreeView/SharpTreeViewTextSearch.cs @@ -36,7 +36,7 @@ namespace ICSharpCode.ILSpy.Controls.TreeView typeof(SharpTreeViewTextSearch), typeof(SharpTreeViewTextSearch), new FrameworkPropertyMetadata(null)); static readonly DependencyProperty TextSearchInstanceProperty = TextSearchInstancePropertyKey.DependencyProperty; - DispatcherTimer timer; + DispatcherTimer? timer; bool isActive; int lastMatchIndex; diff --git a/ILSpy/DecompilationOptions.cs b/ILSpy/DecompilationOptions.cs index e5d480c3e..f07026732 100644 --- a/ILSpy/DecompilationOptions.cs +++ b/ILSpy/DecompilationOptions.cs @@ -83,7 +83,7 @@ namespace ICSharpCode.ILSpy internal int StepLimit = int.MaxValue; internal bool IsDebug = false; - public DecompilationOptions(LanguageVersion version, DecompilerSettings settings, DisplaySettings displaySettings) + public DecompilationOptions(LanguageVersion? version, DecompilerSettings settings, DisplaySettings displaySettings) { if (!Enum.TryParse(version?.Version, out Decompiler.CSharp.LanguageVersion languageVersion)) languageVersion = Decompiler.CSharp.LanguageVersion.Latest; diff --git a/ILSpy/Docking/DockWorkspace.cs b/ILSpy/Docking/DockWorkspace.cs index adc8497a7..f3de5959f 100644 --- a/ILSpy/Docking/DockWorkspace.cs +++ b/ILSpy/Docking/DockWorkspace.cs @@ -120,8 +120,8 @@ namespace ICSharpCode.ILSpy.Docking tool.IsVisible = false; } - private TabPageModel activeTabPage = null; - public TabPageModel ActiveTabPage { + private TabPageModel? activeTabPage = null; + public TabPageModel? ActiveTabPage { get { return activeTabPage; } @@ -131,7 +131,7 @@ namespace ICSharpCode.ILSpy.Docking return; } - var state = value.GetState(); + var state = value?.GetState(); if (state != null) { if (state.DecompiledNodes != null) @@ -193,7 +193,7 @@ namespace ICSharpCode.ILSpy.Docking return ActiveTabPage.ShowTextViewAsync(textView => textView.RunWithCancellation(taskCreation)); } - internal void ShowNodes(AvalonEditTextOutput output, TreeNodes.ILSpyTreeNode[] nodes, IHighlightingDefinition highlighting) + internal void ShowNodes(AvalonEditTextOutput output, TreeNodes.ILSpyTreeNode[]? nodes, IHighlightingDefinition highlighting) { ActiveTabPage.ShowTextView(textView => textView.ShowNodes(output, nodes, highlighting)); } @@ -266,6 +266,6 @@ namespace ICSharpCode.ILSpy.Docking } // Dummy property to make the XAML designer happy, the model is provided by the AvalonDock PaneStyleSelectors, not by the DockWorkspace, but the designer assumes the data context in the PaneStyleSelectors is the DockWorkspace. - public PaneModel Model { get; } = null; + public PaneModel? Model { get; } = null; } } diff --git a/ILSpy/Docking/PaneCollection.cs b/ILSpy/Docking/PaneCollection.cs index a1715d9a4..0afa5f316 100644 --- a/ILSpy/Docking/PaneCollection.cs +++ b/ILSpy/Docking/PaneCollection.cs @@ -37,7 +37,7 @@ namespace ICSharpCode.ILSpy.Docking observableCollection.CollectionChanged += (sender, e) => CollectionChanged?.Invoke(this, e); } - public void Add(T item = null) + public void Add(T? item = null) { item ??= new T(); diff --git a/ILSpy/Images/Images.cs b/ILSpy/Images/Images.cs index d605e4be7..4f24c3d0c 100644 --- a/ILSpy/Images/Images.cs +++ b/ILSpy/Images/Images.cs @@ -122,7 +122,7 @@ namespace ICSharpCode.ILSpy public static readonly ImageSource FieldReference = GetIcon("Field", "ReferenceOverlay"); public static readonly ImageSource ExportedType = GetIcon("ShowPublicOnly", "ExportOverlay"); - public static ImageSource Load(object part, string icon) + public static ImageSource Load(object? part, string icon) { if (icon.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) return LoadImage(part, icon); @@ -139,7 +139,7 @@ namespace ICSharpCode.ILSpy return LoadImage(part, icon + ".png"); } - static BitmapImage LoadImage(object part, string icon) + static BitmapImage LoadImage(object? part, string icon) { Uri uri = GetUri(part, icon); BitmapImage image = new BitmapImage(uri); diff --git a/ILSpy/LanguageSettings.cs b/ILSpy/LanguageSettings.cs index 6328a6924..c4a6da66d 100644 --- a/ILSpy/LanguageSettings.cs +++ b/ILSpy/LanguageSettings.cs @@ -38,7 +38,7 @@ namespace ICSharpCode.ILSpy /// the user first select C# 10, then switches to IL, then switches back to C#. After that we must be /// able to restore the original selection (i.e., C# 10). /// - private readonly Dictionary languageVersionHistory = new Dictionary(); + private readonly Dictionary languageVersionHistory = new Dictionary(); public LanguageSettings(XElement element) { @@ -149,7 +149,7 @@ namespace ICSharpCode.ILSpy } } - LanguageVersion languageVersion; + LanguageVersion? languageVersion; /// /// Gets/Sets the current language version. @@ -158,7 +158,7 @@ namespace ICSharpCode.ILSpy /// While this isn't related to filtering, having it as part of the FilterSettings /// makes it easy to pass it down into all tree nodes. /// - public LanguageVersion LanguageVersion { + public LanguageVersion? LanguageVersion { get { return languageVersion; } set { if (languageVersion != value) diff --git a/ILSpy/Languages/CSharpHighlightingTokenWriter.cs b/ILSpy/Languages/CSharpHighlightingTokenWriter.cs index 4128dd486..dfddf721e 100644 --- a/ILSpy/Languages/CSharpHighlightingTokenWriter.cs +++ b/ILSpy/Languages/CSharpHighlightingTokenWriter.cs @@ -73,7 +73,7 @@ namespace ICSharpCode.ILSpy public RichTextModel HighlightingModel { get; } = new RichTextModel(); - public CSharpHighlightingTokenWriter(TokenWriter decoratedWriter, ISmartTextOutput textOutput = null, ILocatable locatable = null) + public CSharpHighlightingTokenWriter(TokenWriter decoratedWriter, ISmartTextOutput? textOutput = null, ILocatable? locatable = null) : base(decoratedWriter) { var highlighting = HighlightingManager.Instance.GetDefinition("C#"); @@ -452,7 +452,7 @@ namespace ICSharpCode.ILSpy } } - public override void WritePrimitiveValue(object value, Decompiler.CSharp.Syntax.LiteralFormat format) + public override void WritePrimitiveValue(object? value, Decompiler.CSharp.Syntax.LiteralFormat format) { HighlightingColor? color = null; if (value is null) @@ -529,8 +529,8 @@ namespace ICSharpCode.ILSpy readonly Stack colorStack = new Stack(); HighlightingColor currentColor = new HighlightingColor(); int currentColorBegin = -1; - readonly ILocatable locatable; - readonly ISmartTextOutput textOutput; + readonly ILocatable? locatable; + readonly ISmartTextOutput? textOutput; private void BeginSpan(HighlightingColor highlightingColor) { diff --git a/ILSpy/Languages/CSharpILMixedLanguage.cs b/ILSpy/Languages/CSharpILMixedLanguage.cs index 4f7ca57cc..ebed5d1c6 100644 --- a/ILSpy/Languages/CSharpILMixedLanguage.cs +++ b/ILSpy/Languages/CSharpILMixedLanguage.cs @@ -83,9 +83,9 @@ namespace ICSharpCode.ILSpy { readonly DecompilationOptions options; // list sorted by IL offset - IList sequencePoints; + IList? sequencePoints; // lines of raw c# source code - string[] codeLines; + string[]? codeLines; public MixedMethodBodyDisassembler(ITextOutput output, DecompilationOptions options) : base(output, options.CancellationToken) diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index dbd581601..cdd8cb429 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -632,7 +632,7 @@ namespace ICSharpCode.ILSpy /// Called on startup or when passed arguments via WndProc from a second instance. /// In the format case, spySettings is non-null; in the latter it is null. /// - void HandleCommandLineArgumentsAfterShowList(CommandLineArguments args, ILSpySettings spySettings = null) + void HandleCommandLineArgumentsAfterShowList(CommandLineArguments args, ILSpySettings? spySettings = null) { var sessionSettings = SettingsService.Instance.SessionSettings; @@ -648,7 +648,7 @@ namespace ICSharpCode.ILSpy } } - async void NavigateOnLaunch(string navigateTo, string[] activeTreeViewPath, ILSpySettings spySettings, List relevantAssemblies) + async void NavigateOnLaunch(string navigateTo, string[] activeTreeViewPath, ILSpySettings? spySettings, List relevantAssemblies) { var initialSelection = AssemblyTreeView.SelectedItem; if (navigateTo != null) @@ -1448,7 +1448,7 @@ namespace ICSharpCode.ILSpy public Language CurrentLanguage => SettingsService.Instance.SessionSettings.LanguageSettings.Language; - public LanguageVersion CurrentLanguageVersion => SettingsService.Instance.SessionSettings.LanguageSettings.LanguageVersion; + public LanguageVersion? CurrentLanguageVersion => SettingsService.Instance.SessionSettings.LanguageSettings.LanguageVersion; public event SelectionChangedEventHandler SelectionChanged; diff --git a/ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs b/ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs index f36164b16..3dc8eeee0 100644 --- a/ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ClassLayoutTableTreeNode.cs @@ -100,8 +100,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference("metadata", classLayout.Parent)); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, classLayout.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, classLayout.Parent); [ColumnInfo("X4", Kind = ColumnKind.Other)] public ushort PackingSize => classLayout.PackingSize; diff --git a/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs b/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs index 45155e67e..4ca9f575a 100644 --- a/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ConstantTableTreeNode.cs @@ -91,8 +91,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, constant.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, constant.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, constant.Parent); [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Value => MetadataTokens.GetHeapOffset(constant.Value); diff --git a/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs b/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs index 1249ca69e..a687035ad 100644 --- a/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/CustomAttributeTableTreeNode.cs @@ -86,8 +86,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, customAttr.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, customAttr.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, customAttr.Parent); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int Constructor => MetadataTokens.GetToken(customAttr.Constructor); @@ -97,8 +97,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, customAttr.Constructor, protocol: "metadata")); } - string constructorTooltip; - public string ConstructorTooltip => GenerateTooltip(ref constructorTooltip, metadataFile, customAttr.Constructor); + string? constructorTooltip; + public string? ConstructorTooltip => GenerateTooltip(ref constructorTooltip, metadataFile, customAttr.Constructor); [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Value => MetadataTokens.GetHeapOffset(customAttr.Value); diff --git a/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs b/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs index 91ab69def..cc297a2fd 100644 --- a/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/DeclSecurityTableTreeNode.cs @@ -87,8 +87,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, declSecAttr.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, declSecAttr.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, declSecAttr.Parent); [ColumnInfo("X8", Kind = ColumnKind.Other)] public DeclarativeSecurityAction Action => declSecAttr.Action; diff --git a/ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs b/ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs index 44ea708f1..ee7c4359f 100644 --- a/ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/EventMapTableTreeNode.cs @@ -98,8 +98,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, eventMap.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, eventMap.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, eventMap.Parent); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int EventList => MetadataTokens.GetToken(eventMap.EventList); @@ -109,8 +109,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, eventMap.EventList, protocol: "metadata")); } - string eventListTooltip; - public string EventListTooltip => GenerateTooltip(ref eventListTooltip, metadataFile, eventMap.EventList); + string? eventListTooltip; + public string? EventListTooltip => GenerateTooltip(ref eventListTooltip, metadataFile, eventMap.EventList); public EventMapEntry(MetadataFile metadataFile, ReadOnlySpan ptr, int row) { diff --git a/ILSpy/Metadata/CorTables/EventTableTreeNode.cs b/ILSpy/Metadata/CorTables/EventTableTreeNode.cs index 20f7003d3..484346d91 100644 --- a/ILSpy/Metadata/CorTables/EventTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/EventTableTreeNode.cs @@ -106,8 +106,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, eventDef.Type, protocol: "metadata")); } - string typeTooltip; - public string TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, eventDef.Type); + string? typeTooltip; + public string? TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, eventDef.Type); public EventDefEntry(MetadataFile metadataFile, EventDefinitionHandle handle) { diff --git a/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs b/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs index dc88622c6..e66d16d22 100644 --- a/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ExportedTypeTableTreeNode.cs @@ -110,8 +110,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, type.Implementation, protocol: "metadata")); } - string implementationTooltip; - public string ImplementationTooltip => GenerateTooltip(ref implementationTooltip, metadataFile, type.Implementation); + string? implementationTooltip; + public string? ImplementationTooltip => GenerateTooltip(ref implementationTooltip, metadataFile, type.Implementation); public ExportedTypeEntry(MetadataFile metadataFile, ExportedTypeHandle handle, ExportedType type) { diff --git a/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs index ba014ccc0..117db920d 100644 --- a/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldLayoutTableTreeNode.cs @@ -99,8 +99,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, fieldLayout.Field, protocol: "metadata")); } - string fieldTooltip; - public string FieldTooltip => GenerateTooltip(ref fieldTooltip, metadataFile, fieldLayout.Field); + string? fieldTooltip; + public string? FieldTooltip => GenerateTooltip(ref fieldTooltip, metadataFile, fieldLayout.Field); [ColumnInfo("X8", Kind = ColumnKind.Other)] public int FieldOffset => fieldLayout.Offset; diff --git a/ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs index 7bb2c1da2..5edae567c 100644 --- a/ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldMarshalTableTreeNode.cs @@ -98,8 +98,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, fieldMarshal.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, fieldMarshal.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, fieldMarshal.Parent); [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int NativeType => MetadataTokens.GetHeapOffset(fieldMarshal.NativeType); diff --git a/ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs index f95f21a29..02f26f619 100644 --- a/ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldRVATableTreeNode.cs @@ -102,8 +102,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, fieldRVA.Field, protocol: "metadata")); } - string fieldTooltip; - public string FieldTooltip => GenerateTooltip(ref fieldTooltip, metadataFile, fieldRVA.Field); + string? fieldTooltip; + public string? FieldTooltip => GenerateTooltip(ref fieldTooltip, metadataFile, fieldRVA.Field); [ColumnInfo("X8", Kind = ColumnKind.Other)] public int FieldOffset => fieldRVA.Offset; diff --git a/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs b/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs index c200cba3c..7d2b5f2dd 100644 --- a/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/FieldTableTreeNode.cs @@ -100,8 +100,8 @@ namespace ICSharpCode.ILSpy.Metadata [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(fieldDef.Signature); - string signatureTooltip; - public string SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); + string? signatureTooltip; + public string? SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); public FieldDefEntry(MetadataFile metadataFile, FieldDefinitionHandle handle) { diff --git a/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs b/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs index d7af52a19..91bd5ef97 100644 --- a/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/GenericParamConstraintTableTreeNode.cs @@ -87,9 +87,9 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, genericParamConstraint.Parameter, protocol: "metadata")); } - string ownerTooltip; + string? ownerTooltip; - public string OwnerTooltip { + public string? OwnerTooltip { get { if (ownerTooltip == null) { @@ -111,8 +111,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, genericParamConstraint.Type, protocol: "metadata")); } - string typeTooltip; - public string TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, genericParamConstraint.Type); + string? typeTooltip; + public string? TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, genericParamConstraint.Type); public GenericParamConstraintEntry(MetadataFile metadataFile, GenericParameterConstraintHandle handle) { diff --git a/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs b/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs index 1ebc8f106..cfdbfaecb 100644 --- a/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/GenericParamTableTreeNode.cs @@ -95,8 +95,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, genericParam.Parent, protocol: "metadata")); } - string ownerTooltip; - public string OwnerTooltip => GenerateTooltip(ref ownerTooltip, metadataFile, genericParam.Parent); + string? ownerTooltip; + public string? OwnerTooltip => GenerateTooltip(ref ownerTooltip, metadataFile, genericParam.Parent); public string Name => metadataFile.Metadata.GetString(genericParam.Name); diff --git a/ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs b/ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs index e47456fb5..c8d4c0f91 100644 --- a/ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ImplMapTableTreeNode.cs @@ -116,8 +116,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, implMap.MemberForwarded, protocol: "metadata")); } - string memberForwardedTooltip; - public string MemberForwardedTooltip => GenerateTooltip(ref memberForwardedTooltip, metadataFile, implMap.MemberForwarded); + string? memberForwardedTooltip; + public string? MemberForwardedTooltip => GenerateTooltip(ref memberForwardedTooltip, metadataFile, implMap.MemberForwarded); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int ImportScope => MetadataTokens.GetToken(implMap.ImportScope); @@ -127,8 +127,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, implMap.ImportScope, protocol: "metadata")); } - string importScopeTooltip; - public string ImportScopeTooltip => GenerateTooltip(ref importScopeTooltip, metadataFile, implMap.ImportScope); + string? importScopeTooltip; + public string? ImportScopeTooltip => GenerateTooltip(ref importScopeTooltip, metadataFile, implMap.ImportScope); public string ImportName => metadataFile.Metadata.GetString(implMap.ImportName); diff --git a/ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs b/ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs index 72e2a6d8b..5068aead0 100644 --- a/ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/InterfaceImplTableTreeNode.cs @@ -99,8 +99,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, interfaceImpl.Class, protocol: "metadata")); } - string classTooltip; - public string ClassTooltip => GenerateTooltip(ref classTooltip, metadataFile, interfaceImpl.Class); + string? classTooltip; + public string? ClassTooltip => GenerateTooltip(ref classTooltip, metadataFile, interfaceImpl.Class); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int Interface => MetadataTokens.GetToken(interfaceImpl.Interface); @@ -110,8 +110,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, interfaceImpl.Interface, protocol: "metadata")); } - string interfaceTooltip; - public string InterfaceTooltip => GenerateTooltip(ref interfaceTooltip, metadataFile, interfaceImpl.Interface); + string? interfaceTooltip; + public string? InterfaceTooltip => GenerateTooltip(ref interfaceTooltip, metadataFile, interfaceImpl.Interface); public InterfaceImplEntry(MetadataFile metadataFile, ReadOnlySpan ptr, int row) { diff --git a/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs b/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs index fca47ac3d..a0fd9dc08 100644 --- a/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/ManifestResourceTableTreeNode.cs @@ -96,8 +96,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, manifestResource.Implementation, protocol: "metadata")); } - string implementationTooltip; - public string ImplementationTooltip => GenerateTooltip(ref implementationTooltip, metadataFile, manifestResource.Implementation); + string? implementationTooltip; + public string? ImplementationTooltip => GenerateTooltip(ref implementationTooltip, metadataFile, manifestResource.Implementation); public ManifestResourceEntry(MetadataFile metadataFile, ManifestResourceHandle handle) { diff --git a/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs b/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs index fc2d01865..c084df6bc 100644 --- a/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MemberRefTableTreeNode.cs @@ -86,8 +86,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, memberRef.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, memberRef.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, memberRef.Parent); public string Name => metadataFile.Metadata.GetString(memberRef.Name); @@ -96,8 +96,8 @@ namespace ICSharpCode.ILSpy.Metadata [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(memberRef.Signature); - string signatureTooltip; - public string SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); + string? signatureTooltip; + public string? SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); public MemberRefEntry(MetadataFile metadataFile, MemberReferenceHandle handle) { diff --git a/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs index 2edd46feb..0573fbbb9 100644 --- a/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodImplTableTreeNode.cs @@ -85,8 +85,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, methodImpl.MethodDeclaration, protocol: "metadata")); } - string methodDeclarationTooltip; - public string MethodDeclarationTooltip => GenerateTooltip(ref methodDeclarationTooltip, metadataFile, methodImpl.MethodDeclaration); + string? methodDeclarationTooltip; + public string? MethodDeclarationTooltip => GenerateTooltip(ref methodDeclarationTooltip, metadataFile, methodImpl.MethodDeclaration); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int MethodBody => MetadataTokens.GetToken(methodImpl.MethodBody); @@ -96,8 +96,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, methodImpl.MethodBody, protocol: "metadata")); } - string methodBodyTooltip; - public string MethodBodyTooltip => GenerateTooltip(ref methodBodyTooltip, metadataFile, methodImpl.MethodBody); + string? methodBodyTooltip; + public string? MethodBodyTooltip => GenerateTooltip(ref methodBodyTooltip, metadataFile, methodImpl.MethodBody); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int Type => MetadataTokens.GetToken(methodImpl.Type); @@ -107,8 +107,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, methodImpl.Type, protocol: "metadata")); } - string typeTooltip; - public string TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, methodImpl.Type); + string? typeTooltip; + public string? TypeTooltip => GenerateTooltip(ref typeTooltip, metadataFile, methodImpl.Type); public MethodImplEntry(MetadataFile metadataFile, MethodImplementationHandle handle) { diff --git a/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs index 62f22c8a9..0878e7d76 100644 --- a/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodSemanticsTableTreeNode.cs @@ -93,8 +93,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, method, protocol: "metadata")); } - string methodTooltip; - public string MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, method); + string? methodTooltip; + public string? MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, method); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int Association => MetadataTokens.GetToken(association); @@ -104,8 +104,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, association, protocol: "metadata")); } - string associationTooltip; - public string AssociationTooltip => GenerateTooltip(ref associationTooltip, metadataFile, association); + string? associationTooltip; + public string? AssociationTooltip => GenerateTooltip(ref associationTooltip, metadataFile, association); public MethodSemanticsEntry(MetadataFile metadataFile, Handle handle, MethodSemanticsAttributes semantics, MethodDefinitionHandle method, EntityHandle association) { diff --git a/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs index 7e8acf6f5..e77d7fb1e 100644 --- a/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodSpecTableTreeNode.cs @@ -88,8 +88,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, methodSpec.Method, protocol: "metadata")); } - string methodTooltip; - public string MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, methodSpec.Method); + string? methodTooltip; + public string? MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, methodSpec.Method); [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(methodSpec.Signature); diff --git a/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs b/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs index f92db4da8..4d7566526 100644 --- a/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/MethodTableTreeNode.cs @@ -109,9 +109,9 @@ namespace ICSharpCode.ILSpy.Metadata [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(methodDef.Signature); - string signatureTooltip; + string? signatureTooltip; - public string SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); + public string? SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int ParamList => MetadataTokens.GetToken(methodDef.GetParameters().FirstOrDefault()); @@ -121,7 +121,7 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, methodDef.GetParameters().FirstOrDefault(), protocol: "metadata")); } - string paramListTooltip; + string? paramListTooltip; public string? ParamListTooltip { get { var param = methodDef.GetParameters().FirstOrDefault(); diff --git a/ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs b/ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs index 02fcd5233..ecbf99b37 100644 --- a/ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/NestedClassTableTreeNode.cs @@ -98,8 +98,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, nestedClass.Nested, protocol: "metadata")); } - string nestedClassTooltip; - public string NestedClassTooltip => GenerateTooltip(ref nestedClassTooltip, metadataFile, nestedClass.Nested); + string? nestedClassTooltip; + public string? NestedClassTooltip => GenerateTooltip(ref nestedClassTooltip, metadataFile, nestedClass.Nested); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int EnclosingClass => MetadataTokens.GetToken(nestedClass.Enclosing); @@ -109,8 +109,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, nestedClass.Enclosing, protocol: "metadata")); } - string enclosingClassTooltip; - public string EnclosingClassTooltip => GenerateTooltip(ref enclosingClassTooltip, metadataFile, nestedClass.Enclosing); + string? enclosingClassTooltip; + public string? EnclosingClassTooltip => GenerateTooltip(ref enclosingClassTooltip, metadataFile, nestedClass.Enclosing); public NestedClassEntry(MetadataFile metadataFile, ReadOnlySpan ptr, int row) { diff --git a/ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs b/ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs index 7bbfcf09b..4addf69bc 100644 --- a/ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/PropertyMapTableTreeNode.cs @@ -98,8 +98,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, propertyMap.Parent, protocol: "metadata")); } - string parentTooltip; - public string ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, propertyMap.Parent); + string? parentTooltip; + public string? ParentTooltip => GenerateTooltip(ref parentTooltip, metadataFile, propertyMap.Parent); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int PropertyList => MetadataTokens.GetToken(propertyMap.PropertyList); @@ -109,8 +109,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, propertyMap.PropertyList, protocol: "metadata")); } - string propertyListTooltip; - public string PropertyListTooltip => GenerateTooltip(ref propertyListTooltip, metadataFile, propertyMap.PropertyList); + string? propertyListTooltip; + public string? PropertyListTooltip => GenerateTooltip(ref propertyListTooltip, metadataFile, propertyMap.PropertyList); public PropertyMapEntry(MetadataFile metadataFile, ReadOnlySpan ptr, int row) { diff --git a/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs b/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs index fe1d1eb72..4c799241c 100644 --- a/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/PropertyTableTreeNode.cs @@ -97,8 +97,8 @@ namespace ICSharpCode.ILSpy.Metadata [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(propertyDef.Signature); - string signatureTooltip; - public string SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); + string? signatureTooltip; + public string? SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); public PropertyDefEntry(MetadataFile metadataFile, PropertyDefinitionHandle handle) { diff --git a/ILSpy/Metadata/CorTables/PtrTableTreeNode.cs b/ILSpy/Metadata/CorTables/PtrTableTreeNode.cs index 245507368..53a3a3d70 100644 --- a/ILSpy/Metadata/CorTables/PtrTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/PtrTableTreeNode.cs @@ -115,8 +115,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, handlePtr.Handle, protocol: "metadata")); } - string handleTooltip; - public string HandleTooltip => GenerateTooltip(ref handleTooltip, metadataFile, handlePtr.Handle); + string? handleTooltip; + public string? HandleTooltip => GenerateTooltip(ref handleTooltip, metadataFile, handlePtr.Handle); public PtrEntry(MetadataFile metadataFile, TableIndex kind, TableIndex handleKind, int handleDefSize, ReadOnlySpan ptr, int row) { diff --git a/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs b/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs index 24c5cf163..8b5b78b1a 100644 --- a/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/StandAloneSigTableTreeNode.cs @@ -80,8 +80,8 @@ namespace ICSharpCode.ILSpy.Metadata [ColumnInfo("X8", Kind = ColumnKind.HeapOffset)] public int Signature => MetadataTokens.GetHeapOffset(standaloneSig.Signature); - string signatureTooltip; - public string SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); + string? signatureTooltip; + public string? SignatureTooltip => GenerateTooltip(ref signatureTooltip, metadataFile, handle); public StandAloneSigEntry(MetadataFile metadataFile, StandaloneSignatureHandle handle) { diff --git a/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs b/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs index cdcb57555..f36940c47 100644 --- a/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/TypeDefTableTreeNode.cs @@ -145,7 +145,7 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, typeDef.GetFields().FirstOrDefault(), protocol: "metadata")); } - string fieldListTooltip; + string? fieldListTooltip; public string? FieldListTooltip { get { var field = typeDef.GetFields().FirstOrDefault(); @@ -163,7 +163,7 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, typeDef.GetMethods().FirstOrDefault(), protocol: "metadata")); } - string methodListTooltip; + string? methodListTooltip; public string? MethodListTooltip { get { var method = typeDef.GetMethods().FirstOrDefault(); diff --git a/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs b/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs index aeaead608..cff75d02d 100644 --- a/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs +++ b/ILSpy/Metadata/CorTables/TypeRefTableTreeNode.cs @@ -86,8 +86,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, typeRef.ResolutionScope, protocol: "metadata")); } - string resolutionScopeTooltip; - public string ResolutionScopeTooltip => GenerateTooltip(ref resolutionScopeTooltip, metadataFile, typeRef.ResolutionScope); + string? resolutionScopeTooltip; + public string? ResolutionScopeTooltip => GenerateTooltip(ref resolutionScopeTooltip, metadataFile, typeRef.ResolutionScope); public string NameTooltip => $"{MetadataTokens.GetHeapOffset(typeRef.Name):X} \"{Name}\""; diff --git a/ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs b/ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs index 8b0f1e888..d2f6b0b63 100644 --- a/ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs +++ b/ILSpy/Metadata/DebugTables/LocalScopeTableTreeNode.cs @@ -84,8 +84,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, localScope.Method, protocol: "metadata")); } - string methodTooltip; - public string MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, localScope.Method); + string? methodTooltip; + public string? MethodTooltip => GenerateTooltip(ref methodTooltip, metadataFile, localScope.Method); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int ImportScope => MetadataTokens.GetToken(localScope.ImportScope); diff --git a/ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs b/ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs index 9341cad78..d9efe7ff6 100644 --- a/ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs +++ b/ILSpy/Metadata/DebugTables/StateMachineMethodTableTreeNode.cs @@ -86,8 +86,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, moveNextMethod, protocol: "metadata")); } - string moveNextMethodTooltip; - public string MoveNextMethodTooltip => GenerateTooltip(ref moveNextMethodTooltip, metadataFile, moveNextMethod); + string? moveNextMethodTooltip; + public string? MoveNextMethodTooltip => GenerateTooltip(ref moveNextMethodTooltip, metadataFile, moveNextMethod); [ColumnInfo("X8", Kind = ColumnKind.Token)] public int KickoffMethod => MetadataTokens.GetToken(kickoffMethod); @@ -97,8 +97,8 @@ namespace ICSharpCode.ILSpy.Metadata MainWindow.Instance.JumpToReference(new EntityReference(metadataFile, kickoffMethod, protocol: "metadata")); } - string kickoffMethodTooltip; - public string KickoffMethodTooltip => GenerateTooltip(ref kickoffMethodTooltip, metadataFile, kickoffMethod); + string? kickoffMethodTooltip; + public string? KickoffMethodTooltip => GenerateTooltip(ref kickoffMethodTooltip, metadataFile, kickoffMethod); public StateMachineMethodEntry(MetadataFile metadataFile, ref BlobReader reader, int row) { diff --git a/ILSpy/Metadata/FlagsTooltip.xaml.cs b/ILSpy/Metadata/FlagsTooltip.xaml.cs index 8e670fca3..c66128a38 100644 --- a/ILSpy/Metadata/FlagsTooltip.xaml.cs +++ b/ILSpy/Metadata/FlagsTooltip.xaml.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.ILSpy.Metadata /// public partial class FlagsTooltip : IEnumerable { - public FlagsTooltip(int value = 0, Type flagsType = null) + public FlagsTooltip(int value = 0, Type? flagsType = null) { InitializeComponent(); } @@ -94,7 +94,7 @@ namespace ICSharpCode.ILSpy.Metadata public abstract class FlagGroup { - public static MultipleChoiceGroup CreateMultipleChoiceGroup(Type flagsType, string header = null, int mask = -1, int selectedValue = 0, bool includeAll = true) + public static MultipleChoiceGroup CreateMultipleChoiceGroup(Type flagsType, string? header = null, int mask = -1, int selectedValue = 0, bool includeAll = true) { MultipleChoiceGroup group = new MultipleChoiceGroup(GetFlags(flagsType, mask, selectedValue, includeAll ? "" : null)); group.Header = header; @@ -102,7 +102,7 @@ namespace ICSharpCode.ILSpy.Metadata return group; } - public static SingleChoiceGroup CreateSingleChoiceGroup(Type flagsType, string header = null, int mask = -1, int selectedValue = 0, Flag defaultFlag = default, bool includeAny = true) + public static SingleChoiceGroup CreateSingleChoiceGroup(Type flagsType, string? header = null, int mask = -1, int selectedValue = 0, Flag defaultFlag = default, bool includeAny = true) { var group = new SingleChoiceGroup(GetFlags(flagsType, mask, selectedValue, includeAny ? "" : null)); group.Header = header; @@ -114,7 +114,7 @@ namespace ICSharpCode.ILSpy.Metadata return group; } - public static IEnumerable GetFlags(Type flagsType, int mask = -1, int selectedValues = 0, string neutralItem = null) + public static IEnumerable GetFlags(Type flagsType, int mask = -1, int selectedValues = 0, string? neutralItem = null) { if (neutralItem != null) yield return new Flag(neutralItem, -1, false); @@ -130,7 +130,7 @@ namespace ICSharpCode.ILSpy.Metadata } } - public string Header { get; set; } + public string? Header { get; set; } public IList Flags { get; protected set; } } diff --git a/ILSpy/Metadata/MetadataTableTreeNode.cs b/ILSpy/Metadata/MetadataTableTreeNode.cs index 18e678804..bbee36ce2 100644 --- a/ILSpy/Metadata/MetadataTableTreeNode.cs +++ b/ILSpy/Metadata/MetadataTableTreeNode.cs @@ -66,7 +66,7 @@ namespace ICSharpCode.ILSpy.Metadata this.scrollTarget = default; } - protected static string? GenerateTooltip(ref string tooltip, MetadataFile module, EntityHandle handle) + protected static string? GenerateTooltip(ref string? tooltip, MetadataFile module, EntityHandle handle) { if (tooltip == null) { diff --git a/ILSpy/Metadata/MetadataTreeNode.cs b/ILSpy/Metadata/MetadataTreeNode.cs index 50f739868..e475ba69b 100644 --- a/ILSpy/Metadata/MetadataTreeNode.cs +++ b/ILSpy/Metadata/MetadataTreeNode.cs @@ -120,9 +120,9 @@ namespace ICSharpCode.ILSpy.Metadata public object Value { get; } public string Meaning { get; } - public IList RowDetails { get; } + public IList? RowDetails { get; } - public Entry(int offset, object value, int size, string member, string meaning, IList rowDetails = null) + public Entry(int offset, object value, int size, string member, string meaning, IList? rowDetails = null) { this.Member = member; this.Offset = offset; diff --git a/ILSpy/Options/MiscSettingsPanel.xaml.cs b/ILSpy/Options/MiscSettingsPanel.xaml.cs index ac98981dd..d72778b40 100644 --- a/ILSpy/Options/MiscSettingsPanel.xaml.cs +++ b/ILSpy/Options/MiscSettingsPanel.xaml.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.ILSpy.Options this.DataContext = LoadMiscSettings(settings); } - static MiscSettingsViewModel currentMiscSettings; + static MiscSettingsViewModel? currentMiscSettings; public static MiscSettingsViewModel CurrentMiscSettings { get { diff --git a/ILSpy/TaskHelper.cs b/ILSpy/TaskHelper.cs index 21bfd56e4..630d1d7d2 100644 --- a/ILSpy/TaskHelper.cs +++ b/ILSpy/TaskHelper.cs @@ -26,7 +26,7 @@ namespace ICSharpCode.ILSpy { public static class TaskHelper { - public static readonly Task CompletedTask = FromResult(null); + public static readonly Task CompletedTask = FromResult(null); public static Task FromResult(T result) { @@ -73,7 +73,7 @@ namespace ICSharpCode.ILSpy /// /// Sets the result of the TaskCompletionSource based on the result of the finished task. /// - public static void SetFromTask(this TaskCompletionSource tcs, Task task) + public static void SetFromTask(this TaskCompletionSource tcs, Task task) { switch (task.Status) { @@ -84,7 +84,7 @@ namespace ICSharpCode.ILSpy tcs.SetCanceled(); break; case TaskStatus.Faulted: - tcs.SetException(task.Exception.InnerExceptions); + tcs.SetException(task.Exception!.InnerExceptions); //the exceptuion must be set if we are faulted sow we igonre nullability warning break; default: throw new InvalidOperationException("The input task must have already finished"); diff --git a/ILSpy/TextView/BracketHighlightRenderer.cs b/ILSpy/TextView/BracketHighlightRenderer.cs index 0a754510b..2336bca8c 100644 --- a/ILSpy/TextView/BracketHighlightRenderer.cs +++ b/ILSpy/TextView/BracketHighlightRenderer.cs @@ -71,12 +71,12 @@ namespace ICSharpCode.ILSpy.TextView public class BracketHighlightRenderer : IBackgroundRenderer { - BracketSearchResult result; + BracketSearchResult? result; Pen borderPen; Brush backgroundBrush; ICSharpCode.AvalonEdit.Rendering.TextView textView; - public void SetHighlight(BracketSearchResult result) + public void SetHighlight(BracketSearchResult? result) { if (this.result != result) { diff --git a/ILSpy/TextView/DocumentationUIBuilder.cs b/ILSpy/TextView/DocumentationUIBuilder.cs index d6d655021..1e0cd1e8d 100644 --- a/ILSpy/TextView/DocumentationUIBuilder.cs +++ b/ILSpy/TextView/DocumentationUIBuilder.cs @@ -50,7 +50,7 @@ namespace ICSharpCode.ILSpy.TextView readonly IHighlightingDefinition highlightingDefinition; readonly FlowDocument document; BlockCollection blockCollection; - InlineCollection inlineCollection; + InlineCollection? inlineCollection; public DocumentationUIBuilder(IAmbience ambience, IHighlightingDefinition highlightingDefinition) { @@ -107,7 +107,7 @@ namespace ICSharpCode.ILSpy.TextView AddBlock(block); } - public void AddSignatureBlock(string signature, RichTextModel highlighting = null) + public void AddSignatureBlock(string signature, RichTextModel? highlighting = null) { var document = new TextDocument(signature); var richText = highlighting ?? DocumentPrinter.ConvertTextDocumentToRichText(document, new DocumentHighlighter(document, highlightingDefinition)).ToRichTextModel(); diff --git a/ILSpy/TextView/UIElementGenerator.cs b/ILSpy/TextView/UIElementGenerator.cs index 0d0f90cba..26a763fd5 100644 --- a/ILSpy/TextView/UIElementGenerator.cs +++ b/ILSpy/TextView/UIElementGenerator.cs @@ -24,7 +24,7 @@ using ICSharpCode.AvalonEdit.Rendering; namespace ICSharpCode.ILSpy.TextView { - using Pair = KeyValuePair>; + using Pair = KeyValuePair?>; /// /// Embeds UIElements in the text output. @@ -36,7 +36,7 @@ namespace ICSharpCode.ILSpy.TextView /// We store this as a sorted list of (offset, Lazy<UIElement>) pairs. /// The "Lazy" part is used to create UIElements on demand (and thus on the UI thread, not on the decompiler thread). /// - public List UIElements; + public List? UIElements; public override int GetFirstInterestedOffset(int startOffset) { diff --git a/ILSpy/TreeNodes/AssemblyTreeNode.cs b/ILSpy/TreeNodes/AssemblyTreeNode.cs index fb108dfaa..c0540530e 100644 --- a/ILSpy/TreeNodes/AssemblyTreeNode.cs +++ b/ILSpy/TreeNodes/AssemblyTreeNode.cs @@ -61,7 +61,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { } - internal AssemblyTreeNode(LoadedAssembly assembly, PackageEntry packageEntry) + internal AssemblyTreeNode(LoadedAssembly assembly, PackageEntry? packageEntry) { this.LoadedAssembly = assembly ?? throw new ArgumentNullException(nameof(assembly)); this.LazyLoading = true; @@ -79,7 +79,7 @@ namespace ICSharpCode.ILSpy.TreeNodes /// If this assembly was loaded from a bundle; this property returns the bundle entry that the /// assembly was loaded from. /// - public PackageEntry PackageEntry { get; } + public PackageEntry? PackageEntry { get; } public override bool IsAutoLoaded { get { @@ -124,7 +124,7 @@ namespace ICSharpCode.ILSpy.TreeNodes } } - TextBlock tooltip; + TextBlock? tooltip; public override object ToolTip { get { diff --git a/ILSpy/TreeNodes/PackageFolderTreeNode.cs b/ILSpy/TreeNodes/PackageFolderTreeNode.cs index 9fc528b3f..b6f743288 100644 --- a/ILSpy/TreeNodes/PackageFolderTreeNode.cs +++ b/ILSpy/TreeNodes/PackageFolderTreeNode.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { readonly PackageFolder folder; - public PackageFolderTreeNode(PackageFolder folder, string text = null) + public PackageFolderTreeNode(PackageFolder folder, string? text = null) { this.folder = folder; this.Text = text ?? folder.Name; diff --git a/ILSpy/TreeNodes/ThreadingSupport.cs b/ILSpy/TreeNodes/ThreadingSupport.cs index a1d66245a..c42c7cba7 100644 --- a/ILSpy/TreeNodes/ThreadingSupport.cs +++ b/ILSpy/TreeNodes/ThreadingSupport.cs @@ -40,7 +40,7 @@ namespace ICSharpCode.ILSpy.TreeNodes { readonly Stopwatch stopwatch = new Stopwatch(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - Task> loadChildrenTask; + Task>? loadChildrenTask; public bool IsRunning { get { return loadChildrenTask != null && !loadChildrenTask.IsCompleted; } diff --git a/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs b/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs index ec039552f..4b88b4dbe 100644 --- a/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs +++ b/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs @@ -101,9 +101,9 @@ namespace ICSharpCode.ILSpy.ViewModels public List PreconfiguredAssemblyLists { get; } - private string selectedAssemblyList; + private string? selectedAssemblyList; - public string SelectedAssemblyList { + public string? SelectedAssemblyList { get => selectedAssemblyList; set { if (selectedAssemblyList != value) @@ -283,7 +283,7 @@ namespace ICSharpCode.ILSpy.ViewModels public string Name { get; } public string Path { get; } - public PreconfiguredAssemblyList(string name, string path = null) + public PreconfiguredAssemblyList(string name, string? path = null) { this.Name = name; this.Path = path;