diff options
author | Gleb Lebedev <gllebede@microsoft.com> | 2022-06-29 14:34:19 +0300 |
---|---|---|
committer | Gleb Lebedev <gllebede@microsoft.com> | 2022-06-29 14:34:19 +0300 |
commit | ebb2040b53747eed245aa8afa133d102b3c14608 (patch) | |
tree | 2aaacf0d02af52bc3a1c34015c1fa45eadfa0777 | |
parent | eab5122e95f32443c686548e646523038ceb7543 (diff) |
Skip type collection if property has MessagePackFormatterAttribute
-rw-r--r-- | src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs b/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs index 935ceb87..eeedbdad 100644 --- a/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs +++ b/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs @@ -720,7 +720,12 @@ namespace MessagePackCompiler.CodeAnalysis stringMembers.Add(member.StringKey, member); } - this.CollectCore(item.Type); // recursive collect + var messagePackFormatter = item.GetAttributes().FirstOrDefault(x => x.AttributeClass.ApproximatelyEqual(this.typeReferences.MessagePackFormatterAttribute))?.ConstructorArguments[0]; + + if (messagePackFormatter == null) + { + this.CollectCore(item.Type); // recursive collect + } } foreach (IFieldSymbol item in type.GetAllMembers().OfType<IFieldSymbol>()) |