Browse Source

De-alias the declaration attribute slot to its own kind

A declaration's attribute collection (AstNodeCollection<AttributeSection>) and an
attribute section's own attributes (AstNodeCollection<Attribute>) both carried
[Slot("Attribute")], so the kind mapped to two child types and the shared
Slots.Attribute widened to AstNode. Give the declaration-level slot its own
"AttributeSection" kind so every kind maps to a single type; EntityDeclaration's
Attributes accessor now reads through the typed Slots.AttributeSection. This was
the last child-access keyed on the SlotKind matching enum.

Assisted-by: Claude:claude-opus-4-8:Claude Code
pull/3807/head
Siegfried Pammer 2 weeks ago committed by Siegfried Pammer
parent
commit
930df9161f
  1. 2
      ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs
  2. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs
  3. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs
  4. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs
  5. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs
  6. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/Accessor.cs
  7. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ConstructorDeclaration.cs
  8. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/DestructorDeclaration.cs
  9. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EntityDeclaration.cs
  10. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EnumMemberDeclaration.cs
  11. 4
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EventDeclaration.cs
  12. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ExtensionDeclaration.cs
  13. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FieldDeclaration.cs
  14. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedFieldDeclaration.cs
  15. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/IndexerDeclaration.cs
  16. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/MethodDeclaration.cs
  17. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/OperatorDeclaration.cs
  18. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ParameterDeclaration.cs
  19. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/PropertyDeclaration.cs

2
ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public const string ReadonlyKeyword = "readonly"; public const string ReadonlyKeyword = "readonly";
public const string NullableToken = "?"; public const string NullableToken = "?";
public const string PointerToken = "*"; public const string PointerToken = "*";
[Slot("Attribute")] [Slot("AttributeSection")]
public partial AstNodeCollection<AttributeSection> Attributes { get; } public partial AstNodeCollection<AttributeSection> Attributes { get; }
/// <summary> /// <summary>

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs

@ -36,7 +36,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{ {
public const string AsyncModifier = "async"; public const string AsyncModifier = "async";
[Slot("Attribute")] [Slot("AttributeSection")]
public partial AstNodeCollection<AttributeSection> Attributes { get; } public partial AstNodeCollection<AttributeSection> Attributes { get; }
public bool IsAsync { get; set; } public bool IsAsync { get; set; }

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs

@ -40,7 +40,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.TypeDefinition; } get { return SymbolKind.TypeDefinition; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs

@ -58,7 +58,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public ClassType ClassType { get; set; } public ClassType ClassType { get; set; }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Identifier")] [Slot("Identifier")]

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public const string OutVarianceKeyword = "out"; public const string OutVarianceKeyword = "out";
public const string InVarianceKeyword = "in"; public const string InVarianceKeyword = "in";
[Slot("Attribute")] [Slot("AttributeSection")]
public partial AstNodeCollection<AttributeSection> Attributes { get; } public partial AstNodeCollection<AttributeSection> Attributes { get; }
public VarianceModifier Variance { get; set; } public VarianceModifier Variance { get; set; }

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/Accessor.cs

@ -66,7 +66,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { } set { }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Body")] [Slot("Body")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ConstructorDeclaration.cs

@ -40,7 +40,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Constructor; } get { return SymbolKind.Constructor; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
// The name is just the declaring type name; exclude it from matching (and the inherited Name match). // The name is just the declaring type name; exclude it from matching (and the inherited Name match).

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/DestructorDeclaration.cs

@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Destructor; } get { return SymbolKind.Destructor; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
// The name is just the declaring type name; exclude it from matching (and the inherited Name match). // The name is just the declaring type name; exclude it from matching (and the inherited Name match).

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EntityDeclaration.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public abstract SymbolKind SymbolKind { get; } public abstract SymbolKind SymbolKind { get; }
public virtual AstNodeCollection<AttributeSection> Attributes { public virtual AstNodeCollection<AttributeSection> Attributes {
get { return base.GetChildrenByRole<AttributeSection>(SlotKind.Attribute); } get { return base.GetChildren(Slots.AttributeSection); }
} }
public Modifiers Modifiers { get; set; } public Modifiers Modifiers { get; set; }

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EnumMemberDeclaration.cs

@ -40,7 +40,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Field; } get { return SymbolKind.Field; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Identifier")] [Slot("Identifier")]

4
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EventDeclaration.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Event; } get { return SymbolKind.Event; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]
@ -81,7 +81,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Event; } get { return SymbolKind.Event; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ExtensionDeclaration.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public override SymbolKind SymbolKind => SymbolKind.TypeDefinition; public override SymbolKind SymbolKind => SymbolKind.TypeDefinition;
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("TypeParameter")] [Slot("TypeParameter")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FieldDeclaration.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Field; } get { return SymbolKind.Field; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedFieldDeclaration.cs

@ -41,7 +41,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Field; } get { return SymbolKind.Field; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/IndexerDeclaration.cs

@ -50,7 +50,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Indexer; } get { return SymbolKind.Indexer; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/MethodDeclaration.cs

@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
// Slots in document order; inherited contract slots (Attributes, ReturnType, NameToken) are // Slots in document order; inherited contract slots (Attributes, ReturnType, NameToken) are
// re-declared override per the flatten model (Part I.3). // re-declared override per the flatten model (Part I.3).
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/OperatorDeclaration.cs

@ -142,7 +142,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Operator; } get { return SymbolKind.Operator; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ParameterDeclaration.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public const string InModifier = "in"; public const string InModifier = "in";
public const string ParamsModifier = "params"; public const string ParamsModifier = "params";
[Slot("Attribute")] [Slot("AttributeSection")]
public partial AstNodeCollection<AttributeSection> Attributes { get; } public partial AstNodeCollection<AttributeSection> Attributes { get; }
public bool HasThisModifier { get; set; } public bool HasThisModifier { get; set; }

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/PropertyDeclaration.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return SymbolKind.Property; } get { return SymbolKind.Property; }
} }
[Slot("Attribute")] [Slot("AttributeSection")]
public override partial AstNodeCollection<AttributeSection> Attributes { get; } public override partial AstNodeCollection<AttributeSection> Attributes { get; }
[Slot("Type")] [Slot("Type")]

Loading…
Cancel
Save