From f921de697a44d3ae827f168a8371d7dc3ca66f2d Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Tue, 2 Mar 2021 03:58:12 +0100 Subject: [PATCH] Fixed links in spec (#3273) --- spec/conversions.md | 2 +- spec/expressions.md | 6 +++--- spec/structs.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/conversions.md b/spec/conversions.md index 005f005..2c2a2d9 100644 --- a/spec/conversions.md +++ b/spec/conversions.md @@ -396,7 +396,7 @@ The following implicit conversions are classified as standard implicit conversio * Implicit nullable conversions ([Implicit nullable conversions](conversions.md#implicit-nullable-conversions)) * Implicit reference conversions ([Implicit reference conversions](conversions.md#implicit-reference-conversions)) * Boxing conversions ([Boxing conversions](conversions.md#boxing-conversions)) -* Implicit constant expression conversions ([Implicit dynamic conversions](conversions.md#implicit-dynamic-conversions)) +* Implicit constant expression conversions ([Implicit constant expression conversions](conversions.md#implicit-constant-expression-conversions)) * Implicit conversions involving type parameters ([Implicit conversions involving type parameters](conversions.md#implicit-conversions-involving-type-parameters)) The standard implicit conversions specifically exclude user-defined implicit conversions. diff --git a/spec/expressions.md b/spec/expressions.md index 5fa1bd4..b6a6508 100644 --- a/spec/expressions.md +++ b/spec/expressions.md @@ -2602,7 +2602,7 @@ await_expression ; ``` -An *await_expression* is only allowed in the body of an async function ([Iterators](classes.md#iterators)). Within the nearest enclosing async function, an *await_expression* may not occur in these places: +An *await_expression* is only allowed in the body of an async function ([Async functions](classes.md#async-functions)). Within the nearest enclosing async function, an *await_expression* may not occur in these places: * Inside a nested (non-async) anonymous function * Inside the block of a *lock_statement* @@ -2642,7 +2642,7 @@ At runtime, the expression `await t` is evaluated as follows: * An awaiter `a` is obtained by evaluating the expression `(t).GetAwaiter()`. * A `bool` `b` is obtained by evaluating the expression `(a).IsCompleted`. -* If `b` is `false` then evaluation depends on whether `a` implements the interface `System.Runtime.CompilerServices.ICriticalNotifyCompletion` (hereafter known as `ICriticalNotifyCompletion` for brevity). This check is done at binding time; i.e. at runtime if `a` has the compile time type `dynamic`, and at compile time otherwise. Let `r` denote the resumption delegate ([Iterators](classes.md#iterators)): +* If `b` is `false` then evaluation depends on whether `a` implements the interface `System.Runtime.CompilerServices.ICriticalNotifyCompletion` (hereafter known as `ICriticalNotifyCompletion` for brevity). This check is done at binding time; i.e. at runtime if `a` has the compile time type `dynamic`, and at compile time otherwise. Let `r` denote the resumption delegate ([Async functions](classes.md#async-functions)): * If `a` does not implement `ICriticalNotifyCompletion`, then the expression `(a as (INotifyCompletion)).OnCompleted(r)` is evaluated. * If `a` does implement `ICriticalNotifyCompletion`, then the expression @@ -3687,7 +3687,7 @@ anonymous_function_body The `=>` operator has the same precedence as assignment (`=`) and is right-associative. -An anonymous function with the `async` modifier is an async function and follows the rules described in [Iterators](classes.md#iterators). +An anonymous function with the `async` modifier is an async function and follows the rules described in [Async functions](classes.md#async-functions). The parameters of an anonymous function in the form of a *lambda_expression* can be explicitly or implicitly typed. In an explicitly typed parameter list, the type of each parameter is explicitly stated. In an implicitly typed parameter list, the types of the parameters are inferred from the context in which the anonymous function occurs—specifically, when the anonymous function is converted to a compatible delegate type or expression tree type, that type provides the parameter types ([Anonymous function conversions](conversions.md#anonymous-function-conversions)). diff --git a/spec/structs.md b/spec/structs.md index eaa45c0..a6cc39a 100644 --- a/spec/structs.md +++ b/spec/structs.md @@ -84,7 +84,7 @@ struct_member_declaration ; ``` -Except for the differences noted in [Class and struct differences](structs.md#class-and-struct-differences), the descriptions of class members provided in [Class members](classes.md#class-members) through [Iterators](classes.md#iterators) apply to struct members as well. +Except for the differences noted in [Class and struct differences](structs.md#class-and-struct-differences), the descriptions of class members provided in [Class members](classes.md#class-members) through [Async functions](classes.md#async-functions) apply to struct members as well. ## Class and struct differences