Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/linker.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/linker/Linker.Steps/LinkAttributesParser.cs')
-rw-r--r--src/linker/Linker.Steps/LinkAttributesParser.cs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/linker/Linker.Steps/LinkAttributesParser.cs b/src/linker/Linker.Steps/LinkAttributesParser.cs
index 81b89e292..6de2fde31 100644
--- a/src/linker/Linker.Steps/LinkAttributesParser.cs
+++ b/src/linker/Linker.Steps/LinkAttributesParser.cs
@@ -145,7 +145,9 @@ namespace Mono.Linker.Steps
var ctorN = new MethodDefinition (".ctor", ctorAttributes, voidType);
var paramN = new ParameterDefinition (objectArrayType);
+#pragma warning disable RS0030 // MethodReference.Parameters is banned. It's necessary to build the method definition here, though.
ctorN.Parameters.Add (paramN);
+#pragma warning restore RS0030
td.Methods.Add (ctorN);
return _context.MarkedKnownMembers.RemoveAttributeInstancesAttributeDefinition = td;
@@ -178,17 +180,16 @@ namespace Mono.Linker.Steps
if (!method.IsInstanceConstructor ())
continue;
- var parameters = method.Parameters;
- if (args.Length != parameters.Count)
+ if (args.Length != method.GetMetadataParametersCount ())
continue;
bool match = true;
- for (int ii = 0; match && ii < args.Length; ++ii) {
+ foreach (var p in method.GetMetadataParameters ()) {
//
// No candidates betterness, only exact matches are supported
//
- var parameterType = _context.TryResolve (parameters[ii].ParameterType);
- if (parameterType == null || parameterType != _context.TryResolve (args[ii].Type))
+ var parameterType = _context.TryResolve (p.ParameterType);
+ if (parameterType == null || parameterType != _context.TryResolve (args[p.MetadataIndex].Type))
match = false;
}
@@ -496,6 +497,7 @@ namespace Mono.Linker.Steps
var (attributes, origins) = ProcessAttributes (parameterNav, method);
if (attributes != null && origins != null) {
string paramName = GetAttribute (parameterNav, "name");
+#pragma warning disable RS0030 // MethodReference.Parameters is banned. It's easiest to leave existing code as is
foreach (ParameterDefinition parameter in method.Parameters) {
if (paramName == parameter.Name) {
if (parameter.HasCustomAttributes || _attributeInfo.CustomAttributes.ContainsKey (parameter))
@@ -504,6 +506,7 @@ namespace Mono.Linker.Steps
break;
}
}
+#pragma warning restore RS0030
}
}
}
@@ -531,6 +534,7 @@ namespace Mono.Linker.Steps
return null;
}
+#pragma warning disable RS0030 // MethdReference.Parameters is banned. It's easiest to leave existing code as is.
static string GetMethodSignature (MethodDefinition method, bool includeReturnType = false)
{
StringBuilder sb = new StringBuilder ();
@@ -549,7 +553,7 @@ namespace Mono.Linker.Steps
sb.Append (">");
}
sb.Append ("(");
- if (method.HasParameters) {
+ if (method.HasMetadataParameters ()) {
for (int i = 0; i < method.Parameters.Count; i++) {
if (i > 0)
sb.Append (",");
@@ -560,6 +564,7 @@ namespace Mono.Linker.Steps
sb.Append (")");
return sb.ToString ();
}
+#pragma warning restore RS0030
protected override void ProcessProperty (TypeDefinition type, PropertyDefinition property, XPathNavigator nav, object? customData, bool fromSignature)
{