Skip to content

Commit 50e5d38

Browse files
atsushienopjcollins
authored andcommitted
[generator] generate only generatable code. (dotnet#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.
1 parent cd7f7a8 commit 50e5d38

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

tools/generator/ClassGen.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ void GenMethods (StreamWriter sw, string indent, CodeGenerationOptions opt)
333333
var overridens = defaultMethods.Where (m => overrides.Where (_ => _.Name == m.Name && _.JniSignature == m.JniSignature)
334334
.Any (mm => mm.DeclaringType.GetAllDerivedInterfaces ().Contains (m.DeclaringType)));
335335

336-
foreach (Method m in Methods.Concat (defaultMethods.Except (overridens))) {
336+
foreach (Method m in Methods.Concat (defaultMethods.Except (overridens)).Where (m => m.DeclaringType.IsGeneratable)) {
337337
bool virt = m.IsVirtual;
338338
m.IsVirtual = !IsFinal && virt;
339339
if (m.IsAbstract && !m.IsInterfaceDefaultMethodOverride && !m.IsInterfaceDefaultMethod)

tools/generator/CodeGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,8 @@ public static void Run (CodeGeneratorOptions options)
323323
new NamespaceMapping (gens).Generate (opt, gen_info);
324324

325325
foreach (IGeneratable gen in gens)
326-
gen.Generate (opt, gen_info);
326+
if (gen.IsGeneratable)
327+
gen.Generate (opt, gen_info);
327328

328329
ClassGen.GenerateTypeRegistrations (opt, gen_info);
329330
ClassGen.GenerateEnumList (gen_info);

0 commit comments

Comments
 (0)