diff --git a/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs b/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs index 26e6611d1..40147ac52 100644 --- a/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs +++ b/src/Xamarin.Android.Tools.Bytecode/ClassPath.cs @@ -305,7 +305,9 @@ void FixupParametersFromDocs (XElement api, string path) continue; var parameterTypes = parameterElements - .Select (p => new JavaMethodParameterTypeInfo ((string) p.Attribute ("jni-type"), (string) p.Attribute ("type"))) + .Select (p => new JavaMethodParameterTypeInfo ( + jniType: (string?) p.Attribute ("jni-type") ?? "", + javaType: (string?) p.Attribute ("type") ?? "")) .ToArray (); if (!parameterTypes.Any ()) @@ -315,7 +317,7 @@ void FixupParametersFromDocs (XElement api, string path) currentpackage, className, currentMethod, - (string) method.Attribute ("jni-signature"), + (string?) method.Attribute ("jni-signature"), parameterTypes, isVarArgs: false ); diff --git a/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs b/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs index a86d0bb6e..175c175c2 100644 --- a/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs +++ b/src/Xamarin.Android.Tools.Bytecode/JavaDocumentScraper.cs @@ -400,9 +400,9 @@ public ApiXmlDocScraper (string apiXmlFile) var xtype = xdoc .Elements ("api") .Elements ("package") - .Where (p => ((string) p.Attribute ("name")) == info.PackageName) + .Where (p => ((string?) p.Attribute ("name")) == info.PackageName) .Elements () - .Where (t => ((string) t.Attribute ("name")) == info.TypeName) + .Where (t => ((string?) t.Attribute ("name")) == info.TypeName) .FirstOrDefault (); if (xtype == null) { return null; @@ -410,13 +410,13 @@ public ApiXmlDocScraper (string apiXmlFile) var members = info.MethodName == "constructor" ? xtype.Elements ("constructor") - : xtype.Elements ("method").Where (m => ((string) m.Attribute ("name")) == info.MethodName); + : xtype.Elements ("method").Where (m => ((string?) m.Attribute ("name")) == info.MethodName); var pcount = info.ParameterTypes.Length; members = members .Where (m => m.Elements ("parameter").Count () == pcount); XElement? member = - members.FirstOrDefault (m => info.MethodSignature == (string) m.Attribute ("jni-signature")); + members.FirstOrDefault (m => info.MethodSignature == (string?) m.Attribute ("jni-signature")); if (member == null) { foreach (var m in members) { var found = true; @@ -436,12 +436,15 @@ public ApiXmlDocScraper (string apiXmlFile) if (member == null) return null; return member.Elements ("parameter") - .Select (p => (string) p.Attribute ("name")) + .Select (p => ((string?) p.Attribute ("name")) ?? "") .ToArray (); bool ParameterTypesMatch (XElement parameter, string ptype) { - var jtype = (string) parameter.Attribute ("type"); + var jtype = (string?) parameter.Attribute ("type"); + if (jtype == null) { + return false; + } if (!jtype.StartsWith (".*", StringComparison.Ordinal)) { return jtype == ptype; }