From 4d57109f20eac3771d5f01032b475df18c8d527b Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 29 Aug 2022 15:02:45 -0500 Subject: [PATCH 1/2] [generator] Handle Java class with base class set to itself. --- .../JavaModels/JavaClassModel.cs | 7 ++++++ .../Utilities/JavaUnresolvableModel.cs | 6 ++++- .../JavaTypeCollectionTests.cs | 25 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaClassModel.cs b/src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaClassModel.cs index 1457b8295..38a7090f7 100644 --- a/src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaClassModel.cs +++ b/src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaClassModel.cs @@ -37,6 +37,13 @@ public override void Resolve (JavaTypeCollection types, ICollection m.Name == "DoT"), "Method with generic T not found"); Assert.IsNotNull (t.Methods.SingleOrDefault (m => m.Name == "DoU"), "Method with generic U not found"); } + + [Test] + public void InvalidBaseTypeResolution () + { + var api = new JavaTypeCollection (); + + // Create "my.ns" package + var my_ns = api.AddPackage ("my.ns", "my/ns"); + + // Create new "my.ns.MyObject" type with "my.ns.MyObject" as base type + var jlo = JavaApiTestHelper.CreateClass (my_ns, "MyObject", javaBaseType: "my.ns.MyObject", javaBaseTypeGeneric: "my.ns.MyObject"); + + api.AddType (jlo); + + // Run the resolver + var results = api.ResolveCollection (); + + // Ensure we marked it as unresolvable + Assert.AreEqual (1, results.Count); + Assert.AreEqual (1, results [0].Unresolvables.Count); + Assert.AreEqual ("The class '[Class] my.ns.MyObject' was removed because the base type 'my.ns.MyObject' is invalid.", results [0].Unresolvables [0].GetDisplayMessage ()); + + // Ensure we removed the type from the collection + Assert.AreEqual (0, api.TypesFlattened.Count); + } } } From ee0be0bfd4a71d43b1b6c2f2e84754c9848ff17e Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Tue, 30 Aug 2022 08:43:47 -0400 Subject: [PATCH 2/2] Always use trailing `,` in enums --- .../Utilities/JavaUnresolvableModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Java.Interop.Tools.JavaTypeSystem/Utilities/JavaUnresolvableModel.cs b/src/Java.Interop.Tools.JavaTypeSystem/Utilities/JavaUnresolvableModel.cs index 1724b41ce..35deb706f 100644 --- a/src/Java.Interop.Tools.JavaTypeSystem/Utilities/JavaUnresolvableModel.cs +++ b/src/Java.Interop.Tools.JavaTypeSystem/Utilities/JavaUnresolvableModel.cs @@ -81,6 +81,6 @@ public enum UnresolvableType ParameterType, BaseType, ImplementsType, - InvalidBaseType + InvalidBaseType, } }