Skip to content

Commit

Permalink
[create-pull-request] automated change (dotnet#1068)
Browse files Browse the repository at this point in the history
Co-authored-by: BillWagner <BillWagner@users.noreply.github.com>
  • Loading branch information
github-actions[bot] and BillWagner authored Mar 28, 2024
1 parent 7ae35e3 commit 395573c
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
3 changes: 2 additions & 1 deletion standard/grammar.md
Original file line number Diff line number Diff line change
Expand Up @@ -1604,7 +1604,8 @@ local_function_modifier
;
ref_local_function_modifier
: unsafe_modifier // unsafe code support
: 'static'
| unsafe_modifier // unsafe code support
;
local_function_body
Expand Down
2 changes: 1 addition & 1 deletion standard/statements.md
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ Unless specified otherwise below, the semantics of all grammar elements is the s
The *identifier* of a *local_function_declaration* shall be unique in its declared block scope, including any enclosing local variable declaration spaces. One consequence of this is that overloaded *local_function_declaration*s are not allowed.
A *local_function_declaration* may include one `async` ([§15.15](classes.md#1515-async-functions)) modifier and one `unsafe` ([§23.1](unsafe-code.md#231-general)) modifier. If the declaration includes the `async` modifier then the return type shall be `void` or aTaskType»` type ([§15.15.1](classes.md#15151-general)). If the declaration includes the `static` modifier, the function is a ***static local function***; otherwise, it is a ***non-static local function***. It is a compile-time error for *type_parameter_list* or *formal_parameter_list* to contain *attributes*. If the local function is declared in an unsafe context23.2), the local function may include unsafe code, even if the local function declaration doesn't include the `unsafe` modifier.
A *local_function_declaration* may include one `async` ([§15.15](classes.md#1515-async-functions)) modifier and one `unsafe` ([§23.1](unsafe-code.md#231-general)) modifier. If the declaration includes the `async` modifier then the return type shall be `void` or aTaskType»` type ([§15.15.1](classes.md#15151-general)). If the declaration includes the `static` modifier, the function is a ***static local function***; otherwise, it is a ***non-static local function***. It is a compile-time error for *type_parameter_list* or *formal_parameter_list* to contain *attributes*. If the local function is declared in an unsafe context ([§23.2](unsafe-code.md#232-unsafe-contexts)), the local function may include unsafe code, even if the local function declaration doesnt include the `unsafe` modifier.
A local function is declared at block scope. A non-static local function may capture variables from the enclosing scope while a static local function shall not (so it has no access to enclosing locals, parameters, non-static local functions, or `this`). It is a compile-time error if a captured variable is read by the body of a non-static local function but is not definitely assigned before each call to the function. The compiler shall determine which variables are definitely assigned on return ([§9.4.4.33](variables.md#94433-rules-for-variables-in-local-functions)).
Expand Down

0 comments on commit 395573c

Please sign in to comment.