From cb2605d051680d529c3b23860b0a9367e288a657 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Fri, 8 Sep 2017 20:43:43 +0900 Subject: [PATCH] Project refactoring: now TypeNameMappings on desktop is gone. JavaNativeTypeManager is gone directly into Mono.Android.csproj and Java.Interop.Tools.JavaCallableWrappers.csproj. Most of the shared NamingCustomAttributes references are gone, because Java.Interop.Tools.JavaCallableWrappers references it and it is referenced almost everywhere. Other than that, NamingCustomAttributes.shproj is only in Mono.Android.csproj and Xamarin.Android.Tools.JavadocImporter (could not be removed due to visibility issue, so there are still duplicates). In addition, there is no need to have `#if GENERATOR` etc. so removed them except for `HAVE_CECIL`. And removed extra partial code blocks that use HAVE_CECIL for future source split. --- Java.Interop.sln | 3 -- ....Interop.Tools.JavaCallableWrappers.csproj | 6 ++- ...op.Tools.JavaCallableWrappers-Tests.csproj | 1 - .../JavaNativeTypeManager.cs | 49 +++++++++---------- tools/generator/generator.csproj | 6 ++- 5 files changed, 32 insertions(+), 33 deletions(-) diff --git a/Java.Interop.sln b/Java.Interop.sln index 361ef409b..ec2765077 100644 --- a/Java.Interop.sln +++ b/Java.Interop.sln @@ -87,8 +87,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.Cecil", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.Diagnostics", "src\Java.Interop.Tools.Diagnostics\Java.Interop.Tools.Diagnostics.csproj", "{64CC4E44-CE3A-4319-BF3F-6CF8BD513870}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Java.Interop.Tools.TypeNameMappings", "src\Java.Interop.Tools.TypeNameMappings\Java.Interop.Tools.TypeNameMappings.shproj", "{E706B6F2-5562-4765-8F07-8CF84A797B30}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "jcw-gen", "tools\jcw-gen\jcw-gen.csproj", "{52C7D9B6-E8C8-47D0-9471-652D278D7D77}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.JavaCallableWrappers-Tests", "src\Java.Interop.Tools.JavaCallableWrappers\Test\Java.Interop.Tools.JavaCallableWrappers-Tests.csproj", "{58B564A1-570D-4DA2-B02D-25BDDB1A9F4F}" @@ -378,7 +376,6 @@ Global {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {D48EE8D0-0A0A-4493-AEF5-DAF5F8CF86AD} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} = {0998E45F-8BCE-4791-A944-962CD54E2D80} - {E706B6F2-5562-4765-8F07-8CF84A797B30} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {52C7D9B6-E8C8-47D0-9471-652D278D7D77} = {C8F58966-94BF-407F-914A-8654F8B8AE3B} {58B564A1-570D-4DA2-B02D-25BDDB1A9F4F} = {271C9F30-F679-4793-942B-0D9527CB3E2F} {15945D4B-FF56-4BCC-B598-2718D199DD08} = {C8F58966-94BF-407F-914A-8654F8B8AE3B} diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index ef263cae8..eb2972633 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -38,9 +38,10 @@ + + JavaNativeTypeManager.cs + - - {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} @@ -63,5 +64,6 @@ MonoRuntimeProvider.Shared.java + diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj index 4d585ce8e..3af043685 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj @@ -64,7 +64,6 @@ - diff --git a/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs b/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs index 9ef1c74ed..b1b67a794 100644 --- a/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs +++ b/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs @@ -10,25 +10,33 @@ using Mono.Cecil; using Java.Interop.Tools.Cecil; using Android.Runtime; -#if !GENERATOR using Java.Interop.Tools.JavaCallableWrappers; -#endif // !GENERATOR #endif // HAVE_CECIL -namespace Java.Interop.Tools.TypeNameMappings { +namespace Java.Interop.Tools.TypeNameMappings +{ +#if HAVE_CECIL + public +#endif enum PackageNamingPolicy { LowercaseHash, Lowercase, LowercaseWithAssemblyName, } - public class JniTypeName +#if HAVE_CECIL + public +#endif + class JniTypeName { public string Type { get; internal set; } public bool IsKeyword { get; internal set; } } +#if HAVE_CECIL + public +#endif static class JavaNativeTypeManager { public static PackageNamingPolicy PackageNamingPolicy { get; set; } @@ -143,7 +151,7 @@ public static string ToJniName (Type type) "java/lang/Object"; } - public static string ToJniName (Type type, ExportParameterKind exportKind) + static string ToJniName (Type type, ExportParameterKind exportKind) { if (type == null) throw new ArgumentNullException ("type"); @@ -159,12 +167,8 @@ public static string ToJniName (Type type, ExportParameterKind exportKind) return GetSpecialExportJniType (type.FullName, exportKind); return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, t => { -#if !GEN_JAVA_STUBS && !GENERATOR && !JAVADOC_TO_MDOC return ToJniNameFromAttributes (t); -#else - return null; -#endif - }); + }, _ => false); } public static string ToJniName (string jniType, int rank) @@ -255,7 +259,6 @@ static string GetSpecialExportJniType (string typeName, ExportParameterKind expo return null; } -#if !GEN_JAVA_STUBS && !JAVADOC_TO_MDOC // Keep in sync with ToJniNameFromAttributes(TypeDefinition) public static string ToJniNameFromAttributes (Type type) { @@ -347,7 +350,7 @@ static string GetJniTypeName (TR typeRef, ExportParameterKind exportKind, return rank == 0 && pJniName.Length > 1 ? "L" + pJniName + ";" : ToJniName (pJniName, rank); } - public static ExportParameterKind GetExportKind (System.Reflection.ICustomAttributeProvider p) + static ExportParameterKind GetExportKind (System.Reflection.ICustomAttributeProvider p) { foreach (ExportParameterAttribute a in p.GetCustomAttributes (typeof (ExportParameterAttribute), false)) return a.Kind; @@ -370,7 +373,7 @@ public static string GetJniTypeName (Type typeRef) return GetJniTypeName (typeRef, ExportParameterKind.Unspecified); } - public static string GetJniTypeName (Type typeRef, ExportParameterKind exportKind) + internal static string GetJniTypeName (Type typeRef, ExportParameterKind exportKind) { return GetJniTypeName (typeRef, exportKind, t => t, t => { Type etype; @@ -385,7 +388,6 @@ static string ToJniNameWhichShouldReplaceExistingToJniName (Type type, ExportPar var ret = ToJniNameFromAttributes (type); return ret ?? ToJniName (type, exportKind); } -#endif #if HAVE_CECIL @@ -401,12 +403,12 @@ internal static ExportParameterAttribute ToExportParameterAttribute (CustomAttri return new ExportParameterAttribute ((ExportParameterKind)attr.ConstructorArguments [0].Value); } - internal static bool IsApplication (TypeDefinition type) + public static bool IsApplication (TypeDefinition type) { return type.GetBaseTypes ().Any (b => b.FullName == "Android.App.Application"); } - internal static bool IsInstrumentation (TypeDefinition type) + public static bool IsInstrumentation (TypeDefinition type) { return type.GetBaseTypes ().Any (b => b.FullName == "Android.App.Instrumentation"); } @@ -430,7 +432,7 @@ public static string GetJniTypeName (TypeReference typeRef) return GetJniTypeName (typeRef, ExportParameterKind.Unspecified); } - public static string GetJniTypeName (TypeReference typeRef, ExportParameterKind exportKind) + internal static string GetJniTypeName (TypeReference typeRef, ExportParameterKind exportKind) { return GetJniTypeName (typeRef, exportKind, t => t.Resolve (), t => { TypeReference etype; @@ -441,7 +443,7 @@ public static string GetJniTypeName (TypeReference typeRef, ExportParameterKind public static string ToCompatJniName (Mono.Cecil.TypeDefinition type) { - return ToJniName (type, t => t.DeclaringType, t => t.Name, ToCompatPackageName, ToJniNameFromAttributes); + return ToJniName (type, t => t.DeclaringType, t => t.Name, ToCompatPackageName, ToJniNameFromAttributes, t => IsNonStaticInnerClass (t as TypeDefinition)); } static string ToCompatPackageName (Mono.Cecil.TypeDefinition type) @@ -456,7 +458,7 @@ public static string ToJniName (Mono.Cecil.TypeDefinition type) "java/lang/Object"; } - public static string ToJniName (TypeDefinition type, ExportParameterKind exportKind) + static string ToJniName (TypeDefinition type, ExportParameterKind exportKind) { if (type == null) throw new ArgumentNullException ("type"); @@ -471,7 +473,7 @@ public static string ToJniName (TypeDefinition type, ExportParameterKind exportK return GetSpecialExportJniType (type.FullName, exportKind); } - return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, ToJniNameFromAttributes); + return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, ToJniNameFromAttributes, t => IsNonStaticInnerClass (t as TypeDefinition)); } static string ToJniNameFromAttributes (TypeDefinition type) @@ -562,7 +564,7 @@ public static string GetPackageName (TypeDefinition type) } #endif - static string ToJniName (T type, Func decl, Func name, Func ns, Func overrideName) + static string ToJniName (T type, Func decl, Func name, Func ns, Func overrideName, Func shouldUpdateName) where T : class { var nameParts = new List (); @@ -576,12 +578,9 @@ static string ToJniName (T type, Func decl, Func name, Func< break; } var n = name (declType).Replace ('`', '_'); -#if HAVE_CECIL - var td = declType as TypeDefinition; - if (IsNonStaticInnerClass (td)) { + if (shouldUpdateName (declType)) { n = "$" + name (decl (declType)) + "_" + n; } -#endif nameParts.Add (n); } diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 957eb4009..5ab46b18f 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -112,8 +112,6 @@ - - @@ -136,6 +134,10 @@ {15945D4B-FF56-4BCC-B598-2718D199DD08} Xamarin.Android.Cecil + + {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} + Java.Interop.Tools.JavaCallableWrappers +