Skip to content
This repository was archived by the owner on Jul 6, 2026. It is now read-only.

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

11 files changed

Lines changed: 13 additions & 13 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public AbsSpinnerInvoker (IntPtr handle, JniHandleOwnership transfer) : base (ha
123123
conststring__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‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public AdapterViewInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h
109109
conststring__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‎

Lines changed: 1 addition & 1 deletion
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=stackallocJniArgumentValue[1];
6666
__args[0]=newJniArgumentValue(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‎

Lines changed: 1 addition & 1 deletion
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=stackallocJniArgumentValue[1];
6363
__args[0]=newJniArgumentValue(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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 2 additions & 2 deletions
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]=newJValue(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‎

Lines changed: 2 additions & 2 deletions
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]=newJValue(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‎

Lines changed: 1 addition & 1 deletion
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)

0 commit comments

Comments
 (0)