You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the C# 7.x draft, §15.15.1 (Async functions / General) states:
The return_type of an async method shall be either void or a task type. For an async method that returns a value, a task type shall be generic. For an async method that does not return a value, a task type shall not be generic. Such types are referred to in this specification as «TaskType»<T> and «TaskType», respectively. (The Standard library type System.Threading.Tasks.Task and types constructed from System.Threading.Tasks.Task<TResult> are task types.)
A task type shall be a class or struct type that is associated with a task builder type via the attribute System.Runtime.CompilerServices.AsyncMethodBuilderAttribute. Such types are referred to in this specification as «TaskBuilderType»<T> and «TaskBuilderType».
However, System.Threading.Tasks.Task and System.Threading.Tasks.Task<TResult> are not decorated with AsyncMethodBuilderAttribute. Not in §C.3 (Standard Library Types not defined in ISO/IEC 23271), and not in .NET Framework either.
Example
None.
Expected behavior
Special-case System.Threading.Tasks.Task and System.Threading.Tasks.Task<TResult> so that they need not be decorated with AsyncMethodBuilderAttribute.
Additional context
None.
The text was updated successfully, but these errors were encountered:
- `Task` and `Task<T>` are classified as task types despite not
specifying builder types
- Interfaces are allowed to be task types
- Enums and methods are prohibited from being decorated with
AsyncMethodBuilderAttribute
- Task types must not be generic in more than one type parameter
(including in terms of containing types)
Discussion required for all of this, but if merged, would fixdotnet#854,
jskeet
added a commit
to jskeet/csharpstandard
that referenced
this issue
Aug 7, 2023
- `Task` and `Task<T>` are classified as task types despite not
specifying builder types
- Interfaces are allowed to be task types
- Enums and methods are prohibited from being decorated with
AsyncMethodBuilderAttribute
- Task types must not be generic in more than one type parameter
(including in terms of containing types)
Discussion required for all of this, but if merged, would fixdotnet#854,
jskeet
added a commit
to jskeet/csharpstandard
that referenced
this issue
Aug 7, 2023
- `Task` and `Task<T>` are classified as task types despite not
specifying builder types
- Interfaces are allowed to be task types
- Enums and methods are prohibited from being decorated with
AsyncMethodBuilderAttribute
- Task types must not be generic in more than one type parameter
(including in terms of containing types)
Discussion required for all of this, but if merged, would
fixdotnet#854, dotnet#856, dotnet#858 and dotnet#859.
* Clarify task types
- `Task` and `Task<T>` are classified as task types despite not
specifying builder types
- Interfaces are allowed to be task types
- Enums and methods are prohibited from being decorated with
AsyncMethodBuilderAttribute
- Task types must not be generic in more than one type parameter
(including in terms of containing types)
Discussion required for all of this, but if merged, would
fix#854, #856, #858 and #859.
* Prevent nesting within generic types, for task types.
This wording follows the wording in 15.15.2 for task builders.
Describe the bug
In the C# 7.x draft, §15.15.1 (Async functions / General) states:
However,
System.Threading.Tasks.Task
andSystem.Threading.Tasks.Task<TResult>
are not decorated with AsyncMethodBuilderAttribute. Not in §C.3 (Standard Library Types not defined in ISO/IEC 23271), and not in .NET Framework either.Example
None.
Expected behavior
Special-case
System.Threading.Tasks.Task
andSystem.Threading.Tasks.Task<TResult>
so that they need not be decorated with AsyncMethodBuilderAttribute.Additional context
None.
The text was updated successfully, but these errors were encountered: