Skip to content

Commit 7815e84

Browse files
committed
Merge remote-tracking branch 'origin/main' into jonp-iface-invokers-910
2 parents 0361b4c + 3c83179 commit 7815e84

File tree

15 files changed

+67
-8
lines changed

15 files changed

+67
-8
lines changed

external/xamarin-android-tools

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<Project>
2+
<Import Project="..\Directory.Build.props" />
3+
</Project>

src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaFieldModel.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,13 @@ public override void Resolve (JavaTypeCollection types, ICollection<JavaUnresolv
4343
return;
4444
}
4545
}
46+
47+
public override string ToString ()
48+
{
49+
if (DeclaringType != null)
50+
return $"[Field] {DeclaringType.FullName}.{Name}";
51+
52+
return $"[Field] {Name}";
53+
}
4654
}
4755
}

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ public partial class AnimationEndEventArgs : global::System.EventArgs {
157157

158158
}
159159

160+
[global::Android.Runtime.Register ("mono/java/code/AnimatorListenerImplementor")]
160161
internal sealed partial class AnimatorListenerImplementor : global::Java.Lang.Object, AnimatorListener {
161162

162163
object sender;

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteDuplicateInterfaceEventArgs.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public partial class AnimationEndEventArgs : global::System.EventArgs {
8888

8989
}
9090

91+
[global::Android.Runtime.Register ("mono/java/code/AnimatorListenerImplementor")]
9192
internal sealed partial class AnimatorListenerImplementor : global::Java.Lang.Object, AnimatorListener {
9293

9394
object? sender;

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ public partial class AnimationEndEventArgs : global::System.EventArgs {
157157

158158
}
159159

160+
[global::Android.Runtime.Register ("mono/java/code/AnimatorListenerImplementor")]
160161
internal sealed partial class AnimatorListenerImplementor : global::Java.Lang.Object, AnimatorListener {
161162

162163
object sender;

tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,12 @@ public void FixupDeprecatedBaseMethods ()
11381138

11391139
var gens = ParseApiDefinition (xml);
11401140

1141+
// Override method should not be marked deprecated because it's: deprecated='not deprecated'
1142+
Assert.IsNull (gens.Single (g => g.Name == "MyClass").Methods.Single (m => m.Name == "DoStuff").Deprecated);
1143+
1144+
options.FixObsoleteOverrides = true;
1145+
gens = ParseApiDefinition (xml);
1146+
11411147
// Override method should be marked deprecated because base method is
11421148
Assert.AreEqual ("deprecated", gens.Single (g => g.Name == "MyClass").Methods.Single (m => m.Name == "DoStuff").Deprecated);
11431149
}
@@ -1158,6 +1164,7 @@ public void FixupDeprecatedSinceBaseMethods ()
11581164
</package>
11591165
</api>";
11601166

1167+
options.FixObsoleteOverrides = true;
11611168
var gens = ParseApiDefinition (xml);
11621169

11631170
// Override method should match base method's 'deprecated-since'

tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public unsafe void OnClick (global::Android.Views.View v)
8888

8989
}
9090

91+
[global::Android.Runtime.Register ("mono/android/view/View_OnClickListenerImplementor")]
9192
internal sealed partial class IOnClickListenerImplementor : global::Java.Lang.Object, IOnClickListener {
9293
public unsafe IOnClickListenerImplementor () : base (IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
9394
{

tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ public byte[] P4 {
141141

142142
}
143143

144+
[global::Android.Runtime.Register ("mono/com/google/android/exoplayer/drm/ExoMediaDrm_OnEventListenerImplementor")]
144145
internal sealed partial class IExoMediaDrmOnEventListenerImplementor : global::Java.Lang.Object, IExoMediaDrmOnEventListener {
145146

146147
object sender;

tools/class-parse/Program.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
using Mono.Options;
99

1010
using Xamarin.Android.Tools.Bytecode;
11+
using System.Text.Json;
12+
using System.Text.Json.Serialization;
1113

1214
namespace Xamarin.Android.Tools {
1315

@@ -159,6 +161,32 @@ static void DumpClassFile (ClassFile c, TextWriter output)
159161
output.WriteLine ("\t\t{0}", attr);
160162
}
161163
}
164+
165+
// Output Kotlin metadata if it exists
166+
var kotlin_metadata = c.Attributes.OfType<RuntimeVisibleAnnotationsAttribute> ()
167+
.FirstOrDefault ()?.Annotations
168+
.FirstOrDefault (a => a.Type == "Lkotlin/Metadata;");
169+
170+
if (kotlin_metadata is not null) {
171+
var meta = KotlinMetadata.FromAnnotation (kotlin_metadata);
172+
var jopt = new JsonSerializerOptions {
173+
ReferenceHandler = ReferenceHandler.Preserve,
174+
WriteIndented = true,
175+
};
176+
177+
if (meta.AsClassMetadata () is KotlinClass kc) {
178+
output.WriteLine ();
179+
var json = JsonSerializer.Serialize (kc, jopt);
180+
output.WriteLine ($"Kotlin Class Metadata [{meta.MetadataVersion}]: {json}");
181+
} else if (meta.AsFileMetadata () is KotlinFile kf) {
182+
output.WriteLine ();
183+
var json = JsonSerializer.Serialize (kf, jopt);
184+
output.WriteLine ($"Kotlin File Metadata [{meta.MetadataVersion}]: {json}");
185+
}
186+
187+
output.WriteLine ();
188+
output.WriteLine ($"Kotlin Metadata String Table: {JsonSerializer.Serialize (meta.Data2, jopt)}");
189+
}
162190
}
163191
}
164192
}

0 commit comments

Comments
 (0)