From 768512bcfab7c25b04b889a625f6c416188dbfe8 Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 27 Jun 2023 08:13:16 +0800 Subject: [PATCH] =?UTF-8?q?[change]=20=E8=A7=A3=E5=86=B3AOTGenericReferenc?= =?UTF-8?q?e=E7=94=9F=E6=88=90=E4=B8=8D=E7=A8=B3=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/AOT/GenericReferenceWriter.cs | 34 ++++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Editor/AOT/GenericReferenceWriter.cs b/Editor/AOT/GenericReferenceWriter.cs index 559a5ec..20612c4 100644 --- a/Editor/AOT/GenericReferenceWriter.cs +++ b/Editor/AOT/GenericReferenceWriter.cs @@ -90,11 +90,12 @@ namespace HybridCLR.Editor.AOT codes.Add(""); codes.Add("\t// {{ AOT generic types"); - - types.Sort((a, b) => a.Type.FullName.CompareTo(b.Type.FullName)); - foreach(var type in types) + + List typeNames = types.Select(t => PrettifyTypeSig(t.ToTypeSig().ToString())).ToList(); + typeNames.Sort(string.CompareOrdinal); + foreach(var typeName in typeNames) { - codes.Add($"\t// {PrettifyTypeSig(type.ToTypeSig().ToString())}"); + codes.Add($"\t// {typeName}"); } codes.Add("\t// }}"); @@ -102,27 +103,36 @@ namespace HybridCLR.Editor.AOT codes.Add(""); codes.Add("\tpublic void RefMethods()"); codes.Add("\t{"); - methods.Sort((a, b) => + + List<(string, string, string)> methodTypeAndNames = methods.Select(m => + (PrettifyTypeSig(m.Method.DeclaringType.ToString()), PrettifyMethodSig(m.Method.Name), PrettifyMethodSig(m.ToMethodSpec().ToString()))) + .ToList(); + methodTypeAndNames.Sort((a, b) => { - int c = a.Method.DeclaringType.FullName.CompareTo(b.Method.DeclaringType.FullName); + int c = String.Compare(a.Item1, b.Item1, StringComparison.Ordinal); if (c != 0) { return c; } - c = a.Method.Name.CompareTo(b.Method.Name); - return c; + + c = String.Compare(a.Item2, b.Item2, StringComparison.Ordinal); + if (c != 0) + { + return c; + } + return String.Compare(a.Item3, b.Item3, StringComparison.Ordinal); }); - foreach(var method in methods) + foreach(var method in methodTypeAndNames) { - codes.Add($"\t\t// {PrettifyMethodSig(method.ToMethodSpec().ToString())}"); + codes.Add($"\t\t// {PrettifyMethodSig(method.Item3)}"); } codes.Add("\t}"); codes.Add("}"); - var utf8WithoutBOM = new System.Text.UTF8Encoding(false); - File.WriteAllText(outputFile, string.Join("\n", codes), utf8WithoutBOM); + var utf8WithoutBom = new System.Text.UTF8Encoding(false); + File.WriteAllText(outputFile, string.Join("\n", codes), utf8WithoutBom); Debug.Log($"[GenericReferenceWriter] write {outputFile}"); } }