Why is the attribute target 'typevar' undocumented?

Viewed 550

As is well known, in C# one can specify the target of a custom attribute specification, as in the example

[method: SomeDecoration]
[return: SomeOtherMark]
int MyMethod();

where the "targets" method: and return: help specify what element in the code the attribute belongs to.

According to the C# Language Specification, the following attribute targets exist:

  • Global ones:
    • assembly
    • module
  • Others:
    • field
    • event
    • method
    • param
    • property
    • return
    • type

Some of them, like field, are always redundant, since it is always clear what the attribute "sits" on without specifying them.

However there does exist (at least in the implementation and version of Visual C# I have here) an additional attribute target, namely:

  • typevar

which is allowed for example in the code

class MyGenericCollection<[typevar: HereYouSee] TItem>    // legal
{
}

The attribute target typevar, just like field and others, is never required.

My question: Does anyone know the historic reason why typevar: is not mentioned in the specification or documentation? Was this simply forgotten when the 2.0 version of the C# Language Specification was written? Or if it was not an oversight, why is it implemented at all?

1 Answers
Related