diff --git a/tools/generator/Parameter.cs b/tools/generator/Parameter.cs index 1dbbc0ddc..8d89f5606 100644 --- a/tools/generator/Parameter.cs +++ b/tools/generator/Parameter.cs @@ -46,7 +46,8 @@ public string GetCall (CodeGenerationOptions opt) public string ToNative (CodeGenerationOptions opt) { - return NeedsPrep ? sym.Call (opt, Name) : sym.ToNative (opt, Name, null); + var safeName = opt.GetSafeIdentifier (Name); + return NeedsPrep ? sym.Call (opt, safeName) : sym.ToNative (opt, safeName, null); } public string GenericType { diff --git a/tools/generator/Tests/CSharpKeywords.cs b/tools/generator/Tests/CSharpKeywords.cs new file mode 100644 index 000000000..023509bc6 --- /dev/null +++ b/tools/generator/Tests/CSharpKeywords.cs @@ -0,0 +1,19 @@ +using System; +using NUnit.Framework; + +namespace generatortests +{ + [TestFixture] + public class CSharpKeywords : BaseGeneratorTest + { + [Test] + public void GeneratedOK () + { + RunAllTargets ( + outputRelativePath: "CSharpKeywords", + apiDescriptionFile: "expected/CSharpKeywords/CSharpKeywords.xml", + expectedRelativePath: "CSharpKeywords"); + } + } +} + diff --git a/tools/generator/Tests/expected.ji/CSharpKeywords/CSharpKeywords.xml b/tools/generator/Tests/expected.ji/CSharpKeywords/CSharpKeywords.xml new file mode 100644 index 000000000..52d6f43cd --- /dev/null +++ b/tools/generator/Tests/expected.ji/CSharpKeywords/CSharpKeywords.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/Tests/expected.ji/CSharpKeywords/Mono.Android.projitems b/tools/generator/Tests/expected.ji/CSharpKeywords/Mono.Android.projitems new file mode 100644 index 000000000..59990d084 --- /dev/null +++ b/tools/generator/Tests/expected.ji/CSharpKeywords/Mono.Android.projitems @@ -0,0 +1,16 @@ + + + + $(DefineConstants);ANDROID_1;ANDROID_2;ANDROID_3;ANDROID_4 + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/generator/Tests/expected.ji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs b/tools/generator/Tests/expected.ji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs new file mode 100644 index 000000000..9a6c3aaa9 --- /dev/null +++ b/tools/generator/Tests/expected.ji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using Android.Runtime; +using Java.Interop; + +namespace Xamarin.Test { + + // Metadata.xml XPath class reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']" + [global::Android.Runtime.Register ("xamarin/test/CSharpKeywords", DoNotGenerateAcw=true)] + public partial class CSharpKeywords : global::Java.Lang.Object { + + internal static readonly JniPeerMembers _members = new JniPeerMembers ("xamarin/test/CSharpKeywords", typeof (CSharpKeywords)); + internal static IntPtr class_ref { + get { + return _members.JniPeerType.PeerReference.Handle; + } + } + + public override global::Java.Interop.JniPeerMembers JniPeerMembers { + get { return _members; } + } + + protected override IntPtr ThresholdClass { + get { return _members.JniPeerType.PeerReference.Handle; } + } + + protected override global::System.Type ThresholdType { + get { return _members.ManagedPeerType; } + } + + protected CSharpKeywords (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) {} + + static Delegate cb_usePartial_I; +#pragma warning disable 0169 + static Delegate GetUsePartial_IHandler () + { + if (cb_usePartial_I == null) + cb_usePartial_I = JNINativeWrapper.CreateDelegate ((Func) n_UsePartial_I); + return cb_usePartial_I; + } + + static IntPtr n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial_) + { + global::Xamarin.Test.CSharpKeywords __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.UsePartial (partial_)); + } +#pragma warning restore 0169 + + // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']/method[@name='usePartial' and count(parameter)=1 and parameter[1][@type='int']]" + [Register ("usePartial", "(I)Ljava/lang/String;", "GetUsePartial_IHandler")] + public virtual unsafe string UsePartial (int partial_) + { + const string __id = "usePartial.(I)Ljava/lang/String;"; + try { + JniArgumentValue* __args = stackalloc JniArgumentValue [1]; + __args [0] = new JniArgumentValue (partial_); + var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, __args); + return JNIEnv.GetString (__rm.Handle, JniHandleOwnership.TransferLocalRef); + } finally { + } + } + + } +} diff --git a/tools/generator/Tests/expected.targets b/tools/generator/Tests/expected.targets index a0c7b21b3..24c070543 100644 --- a/tools/generator/Tests/expected.targets +++ b/tools/generator/Tests/expected.targets @@ -1,438 +1,486 @@ - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + PreserveNewest @@ -495,10 +543,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest @@ -522,58 +570,25 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - + PreserveNewest PreserveNewest - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/tools/generator/Tests/expected/CSharpKeywords/CSharpKeywords.xml b/tools/generator/Tests/expected/CSharpKeywords/CSharpKeywords.xml new file mode 100644 index 000000000..3f1f58f17 --- /dev/null +++ b/tools/generator/Tests/expected/CSharpKeywords/CSharpKeywords.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tools/generator/Tests/expected/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs b/tools/generator/Tests/expected/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs new file mode 100644 index 000000000..b7c270c30 --- /dev/null +++ b/tools/generator/Tests/expected/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using Android.Runtime; + +namespace Xamarin.Test { + + // Metadata.xml XPath class reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']" + [global::Android.Runtime.Register ("xamarin/test/CSharpKeywords", DoNotGenerateAcw=true)] + public partial class CSharpKeywords : global::Java.Lang.Object { + + internal static IntPtr java_class_handle; + internal static IntPtr class_ref { + get { + return JNIEnv.FindClass ("xamarin/test/CSharpKeywords", ref java_class_handle); + } + } + + protected override IntPtr ThresholdClass { + get { return class_ref; } + } + + protected override global::System.Type ThresholdType { + get { return typeof (CSharpKeywords); } + } + + protected CSharpKeywords (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) {} + + static Delegate cb_usePartial_I; +#pragma warning disable 0169 + static Delegate GetUsePartial_IHandler () + { + if (cb_usePartial_I == null) + cb_usePartial_I = JNINativeWrapper.CreateDelegate ((Func) n_UsePartial_I); + return cb_usePartial_I; + } + + static IntPtr n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial_) + { + global::Xamarin.Test.CSharpKeywords __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.UsePartial (partial_)); + } +#pragma warning restore 0169 + + static IntPtr id_usePartial_I; + // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']/method[@name='usePartial' and count(parameter)=1 and parameter[1][@type='int']]" + [Register ("usePartial", "(I)Ljava/lang/String;", "GetUsePartial_IHandler")] + public virtual unsafe string UsePartial (int partial_) + { + if (id_usePartial_I == IntPtr.Zero) + id_usePartial_I = JNIEnv.GetMethodID (class_ref, "usePartial", "(I)Ljava/lang/String;"); + try { + JValue* __args = stackalloc JValue [1]; + __args [0] = new JValue (partial_); + + if (((object) this).GetType () == ThresholdType) + return JNIEnv.GetString (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_usePartial_I, __args), JniHandleOwnership.TransferLocalRef); + else + return JNIEnv.GetString (JNIEnv.CallNonvirtualObjectMethod (((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID (ThresholdClass, "usePartial", "(I)Ljava/lang/String;"), __args), JniHandleOwnership.TransferLocalRef); + } finally { + } + } + + } +} diff --git a/tools/generator/Tests/generator-Tests.csproj b/tools/generator/Tests/generator-Tests.csproj index abfff42be..bf14760b1 100644 --- a/tools/generator/Tests/generator-Tests.csproj +++ b/tools/generator/Tests/generator-Tests.csproj @@ -36,6 +36,7 @@ ..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll + nunit @@ -59,6 +60,7 @@ +