From 50e5d38c3d4ec10c43f72780788d7d2b2e03ba46 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Thu, 8 Sep 2016 20:06:30 -0500 Subject: [PATCH] [generator] generate only generatable code. (#73) Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=43883 The bug describes the situation where generator attempts to generate code for non-generatable referenced types from assemblies. --- tools/generator/ClassGen.cs | 2 +- tools/generator/CodeGenerator.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/generator/ClassGen.cs b/tools/generator/ClassGen.cs index d96c0a491..524feca17 100644 --- a/tools/generator/ClassGen.cs +++ b/tools/generator/ClassGen.cs @@ -333,7 +333,7 @@ void GenMethods (StreamWriter sw, string indent, CodeGenerationOptions opt) var overridens = defaultMethods.Where (m => overrides.Where (_ => _.Name == m.Name && _.JniSignature == m.JniSignature) .Any (mm => mm.DeclaringType.GetAllDerivedInterfaces ().Contains (m.DeclaringType))); - foreach (Method m in Methods.Concat (defaultMethods.Except (overridens))) { + foreach (Method m in Methods.Concat (defaultMethods.Except (overridens)).Where (m => m.DeclaringType.IsGeneratable)) { bool virt = m.IsVirtual; m.IsVirtual = !IsFinal && virt; if (m.IsAbstract && !m.IsInterfaceDefaultMethodOverride && !m.IsInterfaceDefaultMethod) diff --git a/tools/generator/CodeGenerator.cs b/tools/generator/CodeGenerator.cs index 08514e560..d0397d2ea 100644 --- a/tools/generator/CodeGenerator.cs +++ b/tools/generator/CodeGenerator.cs @@ -323,7 +323,8 @@ public static void Run (CodeGeneratorOptions options) new NamespaceMapping (gens).Generate (opt, gen_info); foreach (IGeneratable gen in gens) - gen.Generate (opt, gen_info); + if (gen.IsGeneratable) + gen.Generate (opt, gen_info); ClassGen.GenerateTypeRegistrations (opt, gen_info); ClassGen.GenerateEnumList (gen_info);