Skip to content

Commit 100fffc

Browse files
authored
[generator] Ensure "global::" is prepended to generic return casts. (#838)
Context: dotnet/android#5894 When creating the cast from a generic type parameter (which is currently always `Java.Lang.Object`), `global::` is not prepended to the type cast: return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef); This creates a compilation error if the bound type is in a namespace that ends in `.Java`, such as `MyProduct.Java`. Error CS0234: The type or namespace name 'Lang' does not exist in the namespace 'MyProduct.Java'. Fix this by ensuring the cast output goes through our standard type formatting method which adds `global::` when needed.
1 parent 9b89e90 commit 100fffc

File tree

11 files changed

+13
-13
lines changed

11 files changed

+13
-13
lines changed

tests/generator-Tests/expected.ji/Adapters/Xamarin.Test.AbsSpinner.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public AbsSpinnerInvoker (IntPtr handle, JniHandleOwnership transfer) : base (ha
123123
const string __id = "getAdapter.()Lxamarin/test/Adapter;";
124124
try {
125125
var __rm = _members.InstanceMethods.InvokeAbstractObjectMethod (__id, this, null);
126-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
126+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
127127
} finally {
128128
}
129129
}

tests/generator-Tests/expected.ji/Adapters/Xamarin.Test.AdapterView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public AdapterViewInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h
109109
const string __id = "getAdapter.()Lxamarin/test/Adapter;";
110110
try {
111111
var __rm = _members.InstanceMethods.InvokeAbstractObjectMethod (__id, this, null);
112-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
112+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
113113
} finally {
114114
}
115115
}

tests/generator-Tests/expected.ji/NormalMethods/Xamarin.Test.A.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int in
6565
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
6666
__args [0] = new JniArgumentValue (index);
6767
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, __args);
68-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
68+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
6969
} finally {
7070
}
7171
}

tests/generator-Tests/expected.ji/NormalMethods/Xamarin.Test.C.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int in
6262
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
6363
__args [0] = new JniArgumentValue (index);
6464
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, __args);
65-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
65+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
6666
} finally {
6767
}
6868
}

tests/generator-Tests/expected.ji/TestInterface/Test.ME.IGenericPropertyInterface.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this,
115115
get {
116116
if (id_getObject == IntPtr.Zero)
117117
id_getObject = JNIEnv.GetMethodID (class_ref, "getObject", "()Ljava/lang/Object;");
118-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getObject), JniHandleOwnership.TransferLocalRef);
118+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getObject), JniHandleOwnership.TransferLocalRef);
119119
}
120120
set {
121121
if (id_setObject_Ljava_lang_Object_ == IntPtr.Zero)

tests/generator-Tests/expected/Adapters/Xamarin.Test.AbsSpinner.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public AbsSpinnerInvoker (IntPtr handle, JniHandleOwnership transfer) : base (ha
113113
if (id_getAdapter == IntPtr.Zero)
114114
id_getAdapter = JNIEnv.GetMethodID (class_ref, "getAdapter", "()Lxamarin/test/Adapter;");
115115
try {
116-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getAdapter), JniHandleOwnership.TransferLocalRef);
116+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getAdapter), JniHandleOwnership.TransferLocalRef);
117117
} finally {
118118
}
119119
}

tests/generator-Tests/expected/Adapters/Xamarin.Test.AdapterView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public AdapterViewInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h
8686
if (id_getAdapter == IntPtr.Zero)
8787
id_getAdapter = JNIEnv.GetMethodID (class_ref, "getAdapter", "()Lxamarin/test/Adapter;");
8888
try {
89-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getAdapter), JniHandleOwnership.TransferLocalRef);
89+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getAdapter), JniHandleOwnership.TransferLocalRef);
9090
} finally {
9191
}
9292
}

tests/generator-Tests/expected/NormalMethods/Xamarin.Test.A.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int in
5858
__args [0] = new JValue (index);
5959

6060
if (((object) this).GetType () == ThresholdType)
61-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_setCustomDimension_I, __args), JniHandleOwnership.TransferLocalRef);
61+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_setCustomDimension_I, __args), JniHandleOwnership.TransferLocalRef);
6262
else
63-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallNonvirtualObjectMethod (((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID (ThresholdClass, "setCustomDimension", "(I)Lxamarin/test/A$B;"), __args), JniHandleOwnership.TransferLocalRef);
63+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallNonvirtualObjectMethod (((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID (ThresholdClass, "setCustomDimension", "(I)Lxamarin/test/A$B;"), __args), JniHandleOwnership.TransferLocalRef);
6464
} finally {
6565
}
6666
}

tests/generator-Tests/expected/NormalMethods/Xamarin.Test.C.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int in
5454
__args [0] = new JValue (index);
5555

5656
if (((object) this).GetType () == ThresholdType)
57-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_setCustomDimension_I, __args), JniHandleOwnership.TransferLocalRef);
57+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_setCustomDimension_I, __args), JniHandleOwnership.TransferLocalRef);
5858
else
59-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallNonvirtualObjectMethod (((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID (ThresholdClass, "setCustomDimension", "(I)Lxamarin/test/C;"), __args), JniHandleOwnership.TransferLocalRef);
59+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallNonvirtualObjectMethod (((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID (ThresholdClass, "setCustomDimension", "(I)Lxamarin/test/C;"), __args), JniHandleOwnership.TransferLocalRef);
6060
} finally {
6161
}
6262
}

tests/generator-Tests/expected/TestInterface/Test.ME.IGenericPropertyInterface.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this,
100100
get {
101101
if (id_getObject == IntPtr.Zero)
102102
id_getObject = JNIEnv.GetMethodID (class_ref, "getObject", "()Ljava/lang/Object;");
103-
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getObject), JniHandleOwnership.TransferLocalRef);
103+
return (global::Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getObject), JniHandleOwnership.TransferLocalRef);
104104
}
105105
set {
106106
if (id_setObject_Ljava_lang_Object_ == IntPtr.Zero)

tools/generator/Java.Interop.Tools.Generator.ObjectModel/Symbols/GenericTypeParameter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public string GetObjectHandleProperty (string variable)
7272

7373
public string FromNative (CodeGenerationOptions opt, string varname, bool owned)
7474
{
75-
return String.Format ("({0}{4}) global::Java.Lang.Object.GetObject<{3}> ({1}, {2})", type, varname, owned ? "JniHandleOwnership.TransferLocalRef" : "JniHandleOwnership.DoNotTransfer", opt.GetOutputName (FullName), opt.NullableOperator);
75+
return String.Format ("({0}{4}) global::Java.Lang.Object.GetObject<{3}> ({1}, {2})", opt.GetOutputName (type), varname, owned ? "JniHandleOwnership.TransferLocalRef" : "JniHandleOwnership.DoNotTransfer", opt.GetOutputName (FullName), opt.NullableOperator);
7676
}
7777

7878
public string GetGenericType (Dictionary<string, string> mappings)

0 commit comments

Comments
 (0)