In 6.2.5, this paragraph can be hard to understand:
If the following token is among this list, or an identifier in such a context, then the type_argument_list is retained as part of the simple_name, member_access or pointer_member-access and any other possible parse of the sequence of tokens is discarded. Otherwise, the type_argument_list is not considered to be part of the simple_name, member_access or pointer_member_access, even if there is no other possible parse of the sequence of tokens. (These rules are not applied when parsing a type_argument_list in a namespace_or_type_name §7.8.)
See https://github.com/dotnet/csharpstandard/pull/757#discussion_r1142419702
In 6.2.5, this paragraph can be hard to understand:
also See https://github.com/dotnet/csharpstandard/pull/757#discussion_r1326620299
In 12.12, the grammar for relational and type testing operators has some ambiguities related to
is
type andis
pattern:is type
, but not foris pattern
.is pattern
, the pattern expression must be the same or higher precedence than shift_expression.This was deferred from the C# 7.3 standard.