diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateResourceDesigner.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateResourceDesigner.cs
index 64f6f04bb07..fa7b09c5288 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateResourceDesigner.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateResourceDesigner.cs
@@ -86,6 +86,9 @@ public override bool RunTask ()
var parser = new ManagedResourceParser () { Log = Log, JavaPlatformDirectory = javaPlatformDirectory, ResourceFlagFile = ResourceFlagFile };
resources = parser.Parse (ResourceDirectory, RTxtFile ?? string.Empty, AdditionalResourceDirectories?.Select (x => x.ItemSpec), IsApplication, resource_fixup);
} else {
+ if (JavaResgenInputFile == null) {
+ throw new ArgumentNullException (nameof (JavaResgenInputFile));
+ }
var parser = new JavaResourceParser () { Log = Log };
resources = parser.Parse (JavaResgenInputFile, IsApplication, resource_fixup);
}
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateRtxt.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateRtxt.cs
index b0634082a8f..ec60bbb2d1f 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateRtxt.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateRtxt.cs
@@ -34,7 +34,7 @@ public override bool RunTask ()
var javaPlatformDirectory = JavaPlatformJarPath.IsNullOrEmpty () ? "" : Path.GetDirectoryName (JavaPlatformJarPath);
var parser = new FileResourceParser () { Log = Log, JavaPlatformDirectory = javaPlatformDirectory, ResourceFlagFile = ResourceFlagFile};
- var resources = parser.Parse (ResourceDirectory, AdditionalResourceDirectories, AarLibraries, resource_fixup);
+ var resources = parser.Parse (ResourceDirectory, AdditionalResourceDirectories ?? [], AarLibraries ?? [], resource_fixup);
// only update if it changed.
writer.Write (RTxtFile, resources);
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ACWMapGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ACWMapGenerator.cs
index 6821c84446c..7add9c87a11 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ACWMapGenerator.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ACWMapGenerator.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/Aapt2Daemon.cs b/src/Xamarin.Android.Build.Tasks/Utilities/Aapt2Daemon.cs
index dd6b7b809b7..ab0c8fd888c 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/Aapt2Daemon.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/Aapt2Daemon.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -252,7 +253,7 @@ private void Aapt2DaemonStart ()
}
// wait for the file we expect to be created. There can be a delay between
// the daemon saying "Done" and the file finally being written to disk.
- if (!string.IsNullOrEmpty (job.OutputFile) && !errored) {
+ if (!job.OutputFile.IsNullOrEmpty () && !errored) {
while (!File.Exists (job.OutputFile)) {
// If either the AsyncTask.CancellationToken or tcs.Token are cancelled, we need to abort
tcs.Token.ThrowIfCancellationRequested ();
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AndroidResource.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AndroidResource.cs
index cba751370b7..cf219652841 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AndroidResource.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AndroidResource.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -91,7 +92,7 @@ static bool ResourceNeedsToBeLowerCased (string? value, string? resourceBasePath
// path to the msbuild's intermediate output directory and that location can be changed by the
// user. It's better to be safe than sorry.
resourceBasePath = resourceBasePath?.Trim ();
- if (string.IsNullOrEmpty (resourceBasePath))
+ if (resourceBasePath.IsNullOrEmpty ())
return true;
// Avoid resource names that are all whitespace
@@ -159,7 +160,7 @@ private static void TryFixResourceAlias (XElement elem, string? resourceBasePath
// - @layout/Page1
// - @drawable/Page1
// and corrects the alias to be lower case.
- if (elem.Name == "item" && !string.IsNullOrEmpty(elem.Value) ) {
+ if (elem.Name == "item" && !elem.Value.IsNullOrEmpty() ) {
string value = elem.Value.Trim();
Match m = r.Match (value);
if (m.Success) {
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AndroidRuntime.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AndroidRuntime.cs
index f487869025e..2e2fa66709f 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AndroidRuntime.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AndroidRuntime.cs
@@ -1,3 +1,4 @@
+#nullable enable
namespace Xamarin.Android.Tasks;
public enum AndroidRuntime
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfig.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfig.cs
index 40ea29ee665..6b6cc92b545 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfig.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfig.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
namespace Xamarin.Android.Tasks
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigCLR.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigCLR.cs
index 0efed3ccc3c..b48178218f1 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigCLR.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigCLR.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
namespace Xamarin.Android.Tasks;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyCompression.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyCompression.cs
index 9ef32a4dcb8..fd3d4fc1e56 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyCompression.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyCompression.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Buffers;
@@ -37,7 +38,7 @@ public AssemblyData (string sourcePath, uint descriptorIndex)
public void SetData (string sourcePath, uint descriptorIndex)
{
- if (String.IsNullOrEmpty (sourcePath))
+ if (sourcePath.IsNullOrEmpty ())
throw new ArgumentException ("must not be null or empty", nameof (sourcePath));
SourcePath = sourcePath;
DescriptorIndex = descriptorIndex;
@@ -62,7 +63,7 @@ static CompressionResult Compress (AssemblyData data, string outputFilePath)
var outputDirectory = Path.GetDirectoryName (outputFilePath);
- if (String.IsNullOrEmpty (outputDirectory))
+ if (outputDirectory.IsNullOrEmpty ())
throw new ArgumentException ("must not be null or empty", nameof (outputDirectory));
Directory.CreateDirectory (outputDirectory);
@@ -172,7 +173,7 @@ static string GetCompressedAssemblyOutputDirectory (ITaskItem assembly, string c
string subDirectory = assembly.GetMetadata ("DestinationSubDirectory");
string abi = MonoAndroidHelper.GetAssemblyAbi (assembly);
- if (!string.IsNullOrEmpty (subDirectory) && !(subDirectory.EndsWith ($"{abi}/", StringComparison.Ordinal) || subDirectory.EndsWith ($"{abi}\\", StringComparison.Ordinal))) {
+ if (!subDirectory.IsNullOrEmpty () && !(subDirectory.EndsWith ($"{abi}/", StringComparison.Ordinal) || subDirectory.EndsWith ($"{abi}\\", StringComparison.Ordinal))) {
assemblyOutputDir = Path.Combine (compressedOutputDir, abi, subDirectory);
} else {
assemblyOutputDir = Path.Combine (compressedOutputDir, abi);
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyIdentityMap.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyIdentityMap.cs
index 727cdb7741c..08b1822f903 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyIdentityMap.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyIdentityMap.cs
@@ -1,4 +1,5 @@
-using System;
+#nullable enable
+using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
@@ -12,7 +13,7 @@ internal class AssemblyIdentityMap
public void Load (string mapFile)
{
map.Clear ();
- if (string.IsNullOrWhiteSpace (mapFile) || !File.Exists (mapFile))
+ if (mapFile.IsNullOrWhiteSpace () || !File.Exists (mapFile))
return;
foreach (var s in File.ReadLines (mapFile)) {
if (!map.Contains (s))
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPackagingHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPackagingHelper.cs
index 1599a8e581e..fba7999377d 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPackagingHelper.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPackagingHelper.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs
index 703b08d19d1..eba39ee60ed 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using Java.Interop.Tools.Cecil;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreAssemblyInfo.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreAssemblyInfo.cs
index 37189b143af..590ca553c7d 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreAssemblyInfo.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreAssemblyInfo.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.IO;
@@ -39,7 +40,7 @@ public AssemblyStoreAssemblyInfo (string sourceFilePath, ITaskItem assembly, boo
string nameNoExt = Path.GetFileNameWithoutExtension (name);
string? culture = assembly.GetMetadata ("Culture");
- if (!String.IsNullOrEmpty (culture)) {
+ if (!culture.IsNullOrEmpty ()) {
name = $"{culture}/{name}";
nameNoExt = $"{culture}/{nameNoExt}";
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreBuilder.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreBuilder.cs
index 41195075963..2b976876b86 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreBuilder.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreBuilder.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.Classes.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.Classes.cs
index 81567e4ac0f..9df30db6303 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.Classes.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.Classes.cs
@@ -1,3 +1,4 @@
+#nullable enable
namespace Xamarin.Android.Tasks;
partial class AssemblyStoreGenerator
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs
index 067072b7d24..220157b9ec7 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/BundleConfigSplitConfigsChecker.cs b/src/Xamarin.Android.Build.Tasks/Utilities/BundleConfigSplitConfigsChecker.cs
index d80cc131bc1..236937a5d70 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/BundleConfigSplitConfigsChecker.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/BundleConfigSplitConfigsChecker.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
@@ -5,6 +6,7 @@
using System.Text.Json;
using Microsoft.Build.Utilities;
+using Xamarin.Android.Tasks;
///
/// When bundle configuration uses standard settings for split configs, the per-ABI library
@@ -181,7 +183,7 @@ static void TransitionState (Strings strings, Utf8JsonReader reader, Stack throw new InvalidOperationException ($"Internal error: unsupported state transition to '{need}'")
};
- if (!String.IsNullOrEmpty (objectName) && Xamarin.Android.Tasks.MonoAndroidHelper.StringEquals (needName, objectName)) {
+ if (!objectName.IsNullOrEmpty () && Xamarin.Android.Tasks.MonoAndroidHelper.StringEquals (needName, objectName)) {
state.Push (need);
} else {
state.Push (BundleConfigObject.Other);
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/CecilExtensions.cs b/src/Xamarin.Android.Build.Tasks/Utilities/CecilExtensions.cs
index a111a25efc4..aa66e2318c6 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/CecilExtensions.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/CecilExtensions.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/CompressedAssemblyInfo.cs b/src/Xamarin.Android.Build.Tasks/Utilities/CompressedAssemblyInfo.cs
index a5aa5f0dcd8..305e3a939db 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/CompressedAssemblyInfo.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/CompressedAssemblyInfo.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.IO;
using Microsoft.Build.Framework;
@@ -25,7 +26,7 @@ public CompressedAssemblyInfo (uint fileSize, uint descriptorIndex, AndroidTarge
public static string GetKey (string projectFullPath)
{
- if (String.IsNullOrEmpty (projectFullPath))
+ if (projectFullPath.IsNullOrEmpty ())
throw new ArgumentException ("must be a non-empty string", nameof (projectFullPath));
return $"{CompressedAssembliesInfoKey}:{projectFullPath}";
@@ -35,7 +36,7 @@ public static string GetDictionaryKey (ITaskItem assembly)
{
// Prefer %(DestinationSubPath) if set
var path = assembly.GetMetadata ("DestinationSubPath");
- if (!string.IsNullOrEmpty (path)) {
+ if (!path.IsNullOrEmpty ()) {
return path;
}
// MSBuild sometimes only sets %(DestinationSubDirectory)
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/DSOWrapperGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/DSOWrapperGenerator.cs
index 3dd7b1863cb..ff584246f61 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/DSOWrapperGenerator.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/DSOWrapperGenerator.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
@@ -61,7 +62,7 @@ public static Config GetConfig (TaskLoggingHelper log, string androidBinUtilsDir
foreach (ITaskItem packLibDir in runtimePackLibraryDirs) {
string ?packRID = packLibDir.GetMetadata ("RuntimeIdentifier");
- if (String.IsNullOrEmpty (packRID)) {
+ if (packRID.IsNullOrEmpty ()) {
continue;
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper.cs
index 1cdc0866de9..94a363f1d0d 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Concurrent;
using System.IO;
@@ -20,7 +21,7 @@ static class ELFHelper
{
public static void AssertValidLibraryAlignment (TaskLoggingHelper log, int alignmentInPages, string path, ITaskItem? item)
{
- if (String.IsNullOrEmpty (path) || !File.Exists (path)) {
+ if (path.IsNullOrEmpty () || !File.Exists (path)) {
return;
}
@@ -79,22 +80,22 @@ static void AssertValidLibraryAlignment (TaskLoggingHelper log, uint pageSize, s
}
string? metaValue = item.GetMetadata ("PathInPackage");
- if (String.IsNullOrEmpty (metaValue)) {
+ if (metaValue.IsNullOrEmpty ()) {
metaValue = item.GetMetadata ("OriginalFile");
- if (String.IsNullOrEmpty (metaValue)) {
+ if (metaValue.IsNullOrEmpty ()) {
metaValue = item.ItemSpec;
}
}
string originalFile = metaValue;
metaValue = item.GetMetadata ("NuGetPackageId");
- if (String.IsNullOrEmpty (metaValue)) {
+ if (metaValue.IsNullOrEmpty ()) {
return (Unknown, Unknown, originalFile);
}
string id = metaValue;
string version;
metaValue = item.GetMetadata ("NuGetPackageVersion");
- if (!String.IsNullOrEmpty (metaValue)) {
+ if (!metaValue.IsNullOrEmpty ()) {
version = metaValue;
} else {
version = Unknown;
@@ -106,7 +107,7 @@ static void AssertValidLibraryAlignment (TaskLoggingHelper log, uint pageSize, s
public static bool IsEmptyAOTLibrary (TaskLoggingHelper log, string path)
{
- if (String.IsNullOrEmpty (path) || !File.Exists (path)) {
+ if (path.IsNullOrEmpty () || !File.Exists (path)) {
return false;
}
@@ -121,7 +122,7 @@ public static bool IsEmptyAOTLibrary (TaskLoggingHelper log, string path)
public static bool ReferencesLibrary (string libraryPath, string referencedLibraryName)
{
- if (String.IsNullOrEmpty (libraryPath) || !File.Exists (libraryPath)) {
+ if (libraryPath.IsNullOrEmpty () || !File.Exists (libraryPath)) {
return false;
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentFilesParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentFilesParser.cs
index 3ca6d191584..0aecd7b1434 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentFilesParser.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentFilesParser.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/Features.cs b/src/Xamarin.Android.Build.Tasks/Utilities/Features.cs
index a8c499a9124..90cb710b5f8 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/Features.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/Features.cs
@@ -1,3 +1,4 @@
+#nullable enable
namespace Xamarin.Android.Tools {
static class Features {
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/FileResourceParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/FileResourceParser.cs
index 293751bda92..6721cbdc3ce 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/FileResourceParser.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/FileResourceParser.cs
@@ -1,4 +1,4 @@
-#nullable disable
+#nullable enable
using System;
using System.CodeDom;
@@ -20,14 +20,14 @@ namespace Xamarin.Android.Tasks
{
class FileResourceParser : ResourceParser
{
- public string JavaPlatformDirectory { get; set; }
+ public string? JavaPlatformDirectory { get; set; }
- public string ResourceFlagFile { get; set; }
+ public string? ResourceFlagFile { get; set; }
Dictionary arrayMapping = new Dictionary ();
Dictionary> foofoo = new Dictionary> ();
List custom_types = new List ();
- XDocument publicXml;
+ XDocument? publicXml;
string[] publicXmlFiles = new string[] {
"public.xml",
@@ -35,8 +35,8 @@ class FileResourceParser : ResourceParser
"public-staging.xml",
};
- protected XDocument LoadPublicXml () {
- if (string.IsNullOrEmpty (JavaPlatformDirectory))
+ protected XDocument? LoadPublicXml () {
+ if (JavaPlatformDirectory.IsNullOrEmpty ())
return null;
string publicXmlPath = Path.Combine (JavaPlatformDirectory, "data", "res", "values");
foreach (var file in publicXmlFiles) {
@@ -162,7 +162,7 @@ public IList Parse (string resourceDirectory, IEnumerable additionalR
itemid++;
r.UpdateId (id);
} else {
- if (foofoo.ContainsKey (r.Identifier)) {
+ if (r.Identifier != null && foofoo.ContainsKey (r.Identifier)) {
var items = foofoo[r.Identifier];
if (r.Ids != null) {
// do something special cos its an array we need to replace *some* its.
@@ -214,7 +214,7 @@ void ProcessResourceFile (string file, Dictionary> resour
{
Log.LogDebugMessage ($"{nameof(ProcessResourceFile)} {file}");
var fileName = Path.GetFileNameWithoutExtension (file);
- if (string.IsNullOrEmpty (fileName))
+ if (fileName.IsNullOrEmpty ())
return;
if (fileName.EndsWith (".9", StringComparison.OrdinalIgnoreCase))
fileName = Path.GetFileNameWithoutExtension (fileName);
@@ -274,7 +274,7 @@ void CreateResourceField (string root, string id, Dictionary> resources)
{
Log.LogDebugMessage ($"{nameof(ProcessStyleable)}");
- string topName = null;
+ string? topName = null;
List fields = new List ();
List attribs = new List ();
if (reader.HasAttributes) {
@@ -286,8 +286,8 @@ void ProcessStyleable (XmlReader reader, Dictionary> reso
while (reader.Read ()) {
if (reader.NodeType == XmlNodeType.Whitespace || reader.NodeType == XmlNodeType.Comment)
continue;
- string name = null;
- if (string.IsNullOrEmpty (topName)) {
+ string? name = null;
+ if (topName.IsNullOrEmpty ()) {
if (reader.HasAttributes) {
while (reader.MoveToNextAttribute ()) {
if (reader.Name.Replace ("android:", "") == "name")
@@ -305,7 +305,9 @@ void ProcessStyleable (XmlReader reader, Dictionary> reso
}
reader.MoveToElement ();
if (reader.LocalName == "attr") {
- attribs.Add (name);
+ if (name != null) {
+ attribs.Add (name);
+ }
}
}
var field = new R () {
@@ -314,7 +316,9 @@ void ProcessStyleable (XmlReader reader, Dictionary> reso
Type = RType.Array,
};
if (!arrayMapping.ContainsKey (field)) {
- foofoo.Add (field.Identifier, new List ());
+ if (field.Identifier != null) {
+ foofoo.Add (field.Identifier, new List ());
+ }
attribs.Sort (StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < attribs.Count; i++) {
string name = attribs [i];
@@ -348,7 +352,9 @@ void ProcessStyleable (XmlReader reader, Dictionary> reso
resources [field.ResourceTypeName].Add (field);
int id = 0;
foreach (string r in attribs) {
- foofoo[field.Identifier].Add (r.Replace (":", "_"));
+ if (field.Identifier != null) {
+ foofoo[field.Identifier].Add (r.Replace (":", "_"));
+ }
resources [field.ResourceTypeName].Add (new R () {
ResourceTypeName = field.ResourceTypeName,
Identifier = $"{field.Identifier}_{r.Replace (":", "_")}",
@@ -375,7 +381,7 @@ void ProcessXmlFile (XmlReader reader, Dictionary> resour
if (reader.IsStartElement ()) {
var elementName = reader.Name;
var elementNS = reader.NamespaceURI;
- if (!string.IsNullOrEmpty (elementNS)) {
+ if (!elementNS.IsNullOrEmpty ()) {
if (elementNS != "http://schemas.android.com/apk/res/android")
continue;
}
@@ -383,15 +389,15 @@ void ProcessXmlFile (XmlReader reader, Dictionary> resour
try {
ProcessStyleable (reader.ReadSubtree (), resources);
} catch (Exception ex) {
- Log.LogErrorFromException (ex);
+ Log?.LogErrorFromException (ex);
}
continue;
}
if (reader.HasAttributes) {
- string name = null;
- string type = null;
- string id = null;
- string custom_id = null;
+ string? name = null;
+ string? type = null;
+ string? id = null;
+ string? custom_id = null;
while (reader.MoveToNextAttribute ()) {
if (reader.LocalName == "name")
name = reader.Value;
@@ -426,14 +432,14 @@ void ProcessXmlFile (XmlReader reader, Dictionary> resour
continue;
// Move the reader back to the element node.
reader.MoveToElement ();
- if (!string.IsNullOrEmpty (name)) {
+ if (!name.IsNullOrEmpty ()) {
CreateResourceField (type ?? elementName, name, resources);
}
- if (!string.IsNullOrEmpty (custom_id) && !resources.ContainsKey (custom_id)) {
+ if (!custom_id.IsNullOrEmpty () && !resources.ContainsKey (custom_id)) {
resources.Add (custom_id, new SortedSet (new RComparer ()));
custom_types.Add (custom_id);
}
- if (!string.IsNullOrEmpty (id)) {
+ if (!id.IsNullOrEmpty ()) {
CreateResourceField (custom_id ?? "id", id.Replace ("-", "_").Replace (".", "_"), resources);
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/FileUtil.cs b/src/Xamarin.Android.Build.Tasks/Utilities/FileUtil.cs
index f70ae05f741..40570344264 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/FileUtil.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/FileUtil.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.IO;
using System.Runtime.InteropServices;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/IAssemblyResolverExtensions.cs b/src/Xamarin.Android.Build.Tasks/Utilities/IAssemblyResolverExtensions.cs
index e35950739a8..86403a8f2b8 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/IAssemblyResolverExtensions.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/IAssemblyResolverExtensions.cs
@@ -1,3 +1,4 @@
+#nullable enable
using Mono.Cecil;
namespace Xamarin.Android.Tasks;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ITaskItemExtensions.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ITaskItemExtensions.cs
index 5bdd33d833c..daef61b97aa 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ITaskItemExtensions.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ITaskItemExtensions.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
@@ -17,7 +18,7 @@ public static IEnumerable ToXElements (this ICollection ite
var e = new XElement (itemName, item.ItemSpec);
foreach (var name in knownMetadata) {
var value = item.GetMetadata (name);
- if (!string.IsNullOrEmpty (value))
+ if (!value.IsNullOrEmpty ())
e.SetAttributeValue (name, value);
}
yield return e;
@@ -29,7 +30,7 @@ public static IEnumerable ToXElements (this ICollection ite
{
var value = item.GetMetadata (name);
- if (string.IsNullOrWhiteSpace (value))
+ if (value.IsNullOrWhiteSpace ())
return defaultValue;
return (T?)Convert.ChangeType (value, typeof (T));
@@ -39,7 +40,7 @@ public static IEnumerable ToXElements (this ICollection ite
{
var value = item.GetMetadata (name);
- if (string.IsNullOrWhiteSpace (value)) {
+ if (value.IsNullOrWhiteSpace ()) {
log.LogCodedError ("XA4234", Properties.Resources.XA4234, itemName, item.ToString (), name);
return null;
}
@@ -51,7 +52,7 @@ public static bool TryGetRequiredMetadata (this ITaskItem item, string itemName,
{
value = item.GetMetadata (name);
- if (string.IsNullOrWhiteSpace (value)) {
+ if (value.IsNullOrWhiteSpace ()) {
log.LogCodedError ("XA4234", Properties.Resources.XA4234, itemName, item.ToString (), name);
return false;
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/InvalidActivityNameException.cs b/src/Xamarin.Android.Build.Tasks/Utilities/InvalidActivityNameException.cs
index f23bf6764c7..2c2b5827120 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/InvalidActivityNameException.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/InvalidActivityNameException.cs
@@ -1,4 +1,5 @@
-using System;
+#nullable enable
+using System;
namespace Xamarin.Android.Tasks
{
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/JCWGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/JCWGenerator.cs
index 658adfbc2d3..d466ab85b64 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/JCWGenerator.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/JCWGenerator.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/JavaObjectsXmlFile.cs b/src/Xamarin.Android.Build.Tasks/Utilities/JavaObjectsXmlFile.cs
index b9b51c4c1de..a427c11f33a 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/JavaObjectsXmlFile.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/JavaObjectsXmlFile.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/JsonExtensions.cs b/src/Xamarin.Android.Build.Tasks/Utilities/JsonExtensions.cs
index f560669a6e6..bf189ceaded 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/JsonExtensions.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/JsonExtensions.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Text.Json;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/KnownMetadata.cs b/src/Xamarin.Android.Build.Tasks/Utilities/KnownMetadata.cs
index 5bb5246b936..49bb679683e 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/KnownMetadata.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/KnownMetadata.cs
@@ -1,3 +1,4 @@
+#nullable enable
namespace Xamarin.Android.Tasks;
static class KnownMetadata
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MSBuildLinkContext.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MSBuildLinkContext.cs
index 1b87f817447..388d27b07fa 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MSBuildLinkContext.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MSBuildLinkContext.cs
@@ -1,3 +1,4 @@
+#nullable enable
using Java.Interop.Tools.Cecil;
using Microsoft.Android.Build.Tasks;
using Microsoft.Build.Framework;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MamJsonParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MamJsonParser.cs
index ce7705cf327..cbce0d3be58 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MamJsonParser.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MamJsonParser.cs
@@ -1,6 +1,7 @@
// File must be "stand-alone"; it's included by
// `tools/remap-mam-json-to-xml`
+#nullable enable
using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodCecilAdapter.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodCecilAdapter.cs
index 03440ccf3f1..7c6119f5347 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodCecilAdapter.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodCecilAdapter.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsHelpers.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsHelpers.cs
index 84b5e488253..a281d334873 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsHelpers.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsHelpers.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorCoreCLR.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorCoreCLR.cs
index 6a5726a0d43..e57a943afe9 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorCoreCLR.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorCoreCLR.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System.Collections.Generic;
using Microsoft.Build.Utilities;
using Xamarin.Android.Tools;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorMonoVM.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorMonoVM.cs
index 6405c5f83a8..8409dd6bc61 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorMonoVM.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGeneratorMonoVM.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsState.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsState.cs
index 03668cc2240..d2362187a42 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsState.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsState.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MavenExtensions.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MavenExtensions.cs
index 6649f9895e6..11a68e801fe 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MavenExtensions.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MavenExtensions.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MetadataResolver.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MetadataResolver.cs
index 82fea3650ba..abfc8e9d568 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MetadataResolver.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MetadataResolver.cs
@@ -1,4 +1,5 @@
-using System;
+#nullable enable
+using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection.Metadata;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Basic.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Basic.cs
index 127483cabd9..807c31ac3de 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Basic.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Basic.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Globalization;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Linker.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Linker.cs
index d3072fb4802..9a88811d904 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Linker.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Linker.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
@@ -48,7 +49,7 @@ public static Dictionary> LoadCustomViewMapFile (string
var items = s.Split (CustomViewMapSeparator, count: 2);
var key = items [0];
var value = items [1];
- HashSet set;
+ HashSet? set;
if (!map.TryGetValue (key, out set))
map.Add (key, set = new HashSet ());
set.Add (value);
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Nullable.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Nullable.cs
index 68567e956d4..74a1e11df6d 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Nullable.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.Nullable.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NativeCodeGenState.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NativeCodeGenState.cs
index 4314d17f812..9bd8618dec1 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/NativeCodeGenState.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/NativeCodeGenState.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System.Collections.Generic;
using Java.Interop.Tools.Cecil;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NativeLinker.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NativeLinker.cs
index 33922e755df..ac53cfebd11 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/NativeLinker.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/NativeLinker.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Diagnostics;
using System.IO;
@@ -97,7 +98,7 @@ public NativeLinker (TaskLoggingHelper log, string abi, string soname, string bi
throw new NotSupportedException ($"Unsupported Android target architecture ABI: {abi}");
}
- if (!String.IsNullOrEmpty (elfArch)) {
+ if (!elfArch.IsNullOrEmpty ()) {
extraArgs.Add ($"-m {elfArch}");
}
@@ -124,11 +125,11 @@ public static ITaskItem MakeLibraryItem (string baseLibraryName, string abi)
public bool Link (ITaskItem outputLibraryPath, List linkItems, List? linkStartFiles = null, List? linkEndFiles = null, ICollection? exportDynamicSymbols = null)
{
if (UseNdkLibraries) {
- if (String.IsNullOrEmpty (NdkRootPath)) {
+ if (NdkRootPath.IsNullOrEmpty ()) {
throw new InvalidOperationException ("Internal error: request to use NDK libraries, but NDK root not specified.");
}
- if (String.IsNullOrEmpty (NdkApiLevel)) {
+ if (NdkApiLevel.IsNullOrEmpty ()) {
throw new InvalidOperationException ("Internal error: request to use NDK libraries, but NDK API level not specified.");
}
}
@@ -249,7 +250,7 @@ void WriteFilesToResponseFile (StreamWriter sw, List? files)
bool ParseBooleanMetadata (ITaskItem item, string metadata)
{
string? value = item.GetMetadata (metadata);
- if (String.IsNullOrEmpty (value)) {
+ if (value.IsNullOrEmpty ()) {
return false;
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NativeRuntimeComponents.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NativeRuntimeComponents.cs
index 8a57f7afd96..4773d0cd1c1 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/NativeRuntimeComponents.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/NativeRuntimeComponents.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NativeTypeMappingData.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NativeTypeMappingData.cs
index dfc6782c539..1ac17b55fd9 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/NativeTypeMappingData.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/NativeTypeMappingData.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/OutputLine.cs b/src/Xamarin.Android.Build.Tasks/Utilities/OutputLine.cs
index 6f19ccbbe1f..68c0c1113d0 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/OutputLine.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/OutputLine.cs
@@ -1,4 +1,5 @@
-using System;
+#nullable enable
+using System;
namespace Xamarin.Android.Tasks {
public struct OutputLine {
public string Line;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/PackageFileListBuilder.cs b/src/Xamarin.Android.Build.Tasks/Utilities/PackageFileListBuilder.cs
index 25c03124998..4fc18fe09a8 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/PackageFileListBuilder.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/PackageFileListBuilder.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using Microsoft.Build.Framework;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/PathUtil.cs b/src/Xamarin.Android.Build.Tasks/Utilities/PathUtil.cs
index 5156ca8aa9a..18c06342acc 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/PathUtil.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/PathUtil.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.IO;
using System.Text;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/PinvokeScanner.cs b/src/Xamarin.Android.Build.Tasks/Utilities/PinvokeScanner.cs
index bbce0e6acdb..da3a481274a 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/PinvokeScanner.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/PinvokeScanner.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/PreservePinvokesNativeAssemblyGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/PreservePinvokesNativeAssemblyGenerator.cs
index 64529305e6a..a68850036c5 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/PreservePinvokesNativeAssemblyGenerator.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/PreservePinvokesNativeAssemblyGenerator.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Collections.Generic;
using System.IO;
@@ -373,7 +374,7 @@ LlvmIrFunctionAttributeSet MakeFindPinvokeAttributeSet (LlvmIrModule module)
}
// Might require mapping of component name to a canonical one
- if (libraryNameMap.TryGetValue (componentName, out string? mappedComponentName) && !String.IsNullOrEmpty (mappedComponentName)) {
+ if (libraryNameMap.TryGetValue (componentName, out string? mappedComponentName) && !mappedComponentName.IsNullOrEmpty ()) {
if (Matches (pinfo.LibraryName, mappedComponentName)) {
return (true, componentName);
}
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ResourceIdentifier.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ResourceIdentifier.cs
index 7edfc38faf5..2ba68550ba5 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ResourceIdentifier.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ResourceIdentifier.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
@@ -35,7 +36,7 @@ public class ResourceIdentifier {
public static string CreateValidIdentifier (string identifier)
{
- if (String.IsNullOrWhiteSpace (identifier)) return string.Empty;
+ if (identifier.IsNullOrWhiteSpace ()) return "";
var normalizedIdentifier = identifier.Normalize ();
@@ -46,7 +47,7 @@ public static string CreateValidIdentifier (string identifier)
internal static string GetResourceName (string type, string name, Dictionary map, TaskLoggingHelper log)
{
- string mappedValue;
+ string? mappedValue;
string key = string.Format ("{0}{1}{2}", type, Path.DirectorySeparatorChar, name).ToLowerInvariant ();
if (map.TryGetValue (key, out mappedValue)) {