Skip to content

Test Plan for "Partial Properties" feature #73090

@RikkiGibson

Description

@RikkiGibson

Championed proposal: dotnet/csharplang#6420
Speclet: https://github.com/dotnet/csharplang/blob/main/proposals/csharp-13.0/partial-properties.md
Feature branch: https://github.com/dotnet/roslyn/tree/features/partial-properties

Compiler

  • LangVersion (LangVersion_01)
  • A missing or extra declaration or implementation (MissingDeclaration_*, DuplicateDeclaration_*)
  • Accessor mismatch (get/set missing in either declaration or implementation) (MissingAccessor_*, UnexpectedAccessor_*)
  • set vs. init (AccessorKind_*)
  • readonly vs. not (ModifierDifference_Readonly_Accessors)
  • Accessors split across two declarations or implementations (DuplicateDeclaration_08, split implementation but not split definition)
  • extern part is considered implementation
  • Differences in return or parameter types (TypeDifference_*, NullableDifference_*, Indexers_*)
    • tuple names
    • nullability (warning regardless of nullability context and warning wave)
    • ref kind (RefKindDifference_*)
    • alias usage (AliasDifference)
    • params (ParamsDifference_*)
    • optional parameters (only definition counts, implementation warns, OptionalParameters_*)
    • parameter names (warning, IndexerParameterNameDifference)
  • static vs. non-static (StaticDifference)
  • virtual/override/sealed differences (ExtendedDifference_01)
  • abstract is disallowed (Abstract)
  • unsafe (UnsafeDifference_*)
  • required (Required_*)
  • Different accessibilities, explicit vs. default accessibility (ModifierDifference_Accessibility_*)
  • scoped (ScopedDifference_*, Semantics_Scoped)
  • explicit interface implementation is disallowed (ExplicitImplementation)
  • only in partial type (NotInPartialType)
  • Attributes (Attributes_*)
    • Attributes on both parts
    • field-targeted attribute on declaration
    • nullability attribute differences
    • caller attributes
    • obsolete (Obsolete_*)
    • UnmanagedCallersOnly
  • public API (PartialDefinitionPart, PartialImplementationPart and IsPartialDefinition on property symbol, AssociatedSymbol on accessors, GetDeclaredSymbol) (GetDeclaredSymbol_*)
  • nullability analysis of accessor bodies against correct signature (AllowNull_*, NullableDifference_Analysis)
  • xml docs (PartialProperties_*)
  • Overrides (Semantics_ExtendedModifier)
  • Override a property where the base has a modopt Partial properties: merging declarations and emit of simple cases #72999 (comment)
  • EnC (EnC: Implement support for partial properties #74494)

Productivity

  • IDE minbar (completion, QuickInfo, formatting, colorization, no crashes in manual test pass)
  • GoToDefinition/GoToImplementation

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions