Skip to content

Commit 60c30fb

Browse files
[create-pull-request] automated change (#1429)
Co-authored-by: BillWagner <[email protected]>
1 parent c85ebc3 commit 60c30fb

File tree

5 files changed

+53
-85
lines changed

5 files changed

+53
-85
lines changed

standard/README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -701,11 +701,16 @@
701701
- [§19.3](interfaces.md#193-interface-body) Interface body
702702
- [§19.4](interfaces.md#194-interface-members) Interface members
703703
- [§19.4.1](interfaces.md#1941-general) General
704-
- [§19.4.2](interfaces.md#1942-interface-methods) Interface methods
705-
- [§19.4.3](interfaces.md#1943-interface-properties) Interface properties
706-
- [§19.4.4](interfaces.md#1944-interface-events) Interface events
707-
- [§19.4.5](interfaces.md#1945-interface-indexers) Interface indexers
708-
- [§19.4.6](interfaces.md#1946-interface-member-access) Interface member access
704+
- [§19.4.2](interfaces.md#1942-interface-fields) Interface fields
705+
- [§19.4.3](interfaces.md#1943-interface-methods) Interface methods
706+
- [§19.4.4](interfaces.md#1944-interface-properties) Interface properties
707+
- [§19.4.5](interfaces.md#1945-interface-events) Interface events
708+
- [§19.4.6](interfaces.md#1946-interface-indexers) Interface indexers
709+
- [§19.4.7](interfaces.md#1947-interface-operators) Interface operators
710+
- [§19.4.8](interfaces.md#1948-interface-static-constructors) Interface static constructors
711+
- [§19.4.9](interfaces.md#1949-interface-nested-types) Interface nested types
712+
- [§19.4.10](interfaces.md#19410-most-specific-implementation) most specific implementation
713+
- [§19.4.11](interfaces.md#19411-interface-member-access) Interface member access
709714
- [§19.5](interfaces.md#195-qualified-interface-member-names) Qualified interface member names
710715
- [§19.6](interfaces.md#196-interface-implementations) Interface implementations
711716
- [§19.6.1](interfaces.md#1961-general) General

standard/classes.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
A class is a data structure that may contain data members (constants and fields), function members (methods, properties, events, indexers, operators, instance constructors, finalizers, and static constructors), and nested types. Class types support inheritance, a mechanism whereby a ***derived class*** can extend and specialize a ***base class***.
66

7-
Structs (§16) and interfaces (§18) have members similar to classes but with certain restrictions. This clause defines the declarations for classes and class members. The clauses for structs and interfaces define the restrictions for those types in terms of the corresponding declarations in class types.
7+
Structs ([§16](structs.md#16-structs)) and interfaces ([§18](ranges.md#18-extended-indexing-and-slicing)) have members similar to classes but with certain restrictions. This clause defines the declarations for classes and class members. The clauses for structs and interfaces define the restrictions for those types in terms of the corresponding declarations in class types.
88

99
## 15.2 Class declarations
1010

@@ -2052,7 +2052,7 @@ A variable initializer for an instance field cannot reference the instance being
20522052
20532053
### 15.6.1 General
20542054
2055-
[§15.6](classes.md#156-methods) and its subclauses cover method declarations in classes. That text is augmented by information about declaring methods in structs ([§16.4](structs.md#164-class-and-struct-differences)) and interfaces ([§19.4.2](interfaces.md#1942-interface-methods)).
2055+
[§15.6](classes.md#156-methods) and its subclauses cover method declarations in classes. That text is augmented by information about declaring methods in structs ([§16.4](structs.md#164-class-and-struct-differences)) and interfaces ([§19.4.3](interfaces.md#1943-interface-methods)).
20562056
20572057
A ***method*** is a member that implements a computation or action that can be performed by an object or class. Methods are declared using *method_declaration*s:
20582058
@@ -2921,7 +2921,7 @@ When an instance method declaration includes an `abstract` modifier, that method
29212921
29222922
An abstract method declaration introduces a new virtual method but does not provide an implementation of that method. Instead, non-abstract derived classes are required to provide their own implementation by overriding that method. The *method_body* of an abstract method simply consists of a semicolon.
29232923
2924-
Abstract method declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.2](interfaces.md#1942-interface-methods)).
2924+
Abstract method declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.3](interfaces.md#1943-interface-methods)).
29252925
29262926
> *Example*: In the following code
29272927
>
@@ -3937,7 +3937,7 @@ An abstract property declaration specifies that the accessors of the property ar
39373937
39383938
A property declaration that includes both the `abstract` and `override` modifiers specifies that the property is abstract and overrides a base property. The accessors of such a property are also abstract.
39393939
3940-
Abstract property declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.3](interfaces.md#1943-interface-properties)). The accessors of an inherited virtual property can be overridden in a derived class by including a property declaration that specifies an `override` directive. This is known as an ***overriding property declaration***. An overriding property declaration does not declare a new property. Instead, it simply specializes the implementations of the accessors of an existing virtual property.
3940+
Abstract property declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.4](interfaces.md#1944-interface-properties)). The accessors of an inherited virtual property can be overridden in a derived class by including a property declaration that specifies an `override` directive. This is known as an ***overriding property declaration***. An overriding property declaration does not declare a new property. Instead, it simply specializes the implementations of the accessors of an existing virtual property.
39413941
39423942
The override declaration and the overridden base property are required to have the same declared accessibility. In other words, an override declaration shall not change the accessibility of the base property. However, if the overridden base property is protected internal and it is declared in a different assembly than the assembly containing the override declaration then the override declaration’s declared accessibility shall be protected. If the inherited property has only a single accessor (i.e., if the inherited property is read-only or write-only), the overriding property shall include only that accessor. If the inherited property includes both accessors (i.e., if the inherited property is read-write), the overriding property can include either a single accessor or both accessors. There shall be an identity conversion between the type of the overriding and the inherited property.
39433943
@@ -4304,7 +4304,7 @@ An abstract event declaration specifies that the accessors of the event are virt
43044304
43054305
An event declaration that includes both the `abstract` and `override` modifiers specifies that the event is abstract and overrides a base event. The accessors of such an event are also abstract.
43064306
4307-
Abstract event declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.4](interfaces.md#1944-interface-events)).
4307+
Abstract event declarations are only permitted in abstract classes ([§15.2.2.2](classes.md#15222-abstract-classes)) and interfaces ([§19.4.5](interfaces.md#1945-interface-events)).
43084308
43094309
The accessors of an inherited virtual event can be overridden in a derived class by including an event declaration that specifies an `override` modifier. This is known as an ***overriding event declaration***. An overriding event declaration does not declare a new event. Instead, it simply specializes the implementations of the accessors of an existing virtual event.
43104310

standard/expressions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ A member lookup of a name `N` with `K` type arguments in a type `T` is proces
381381
- Otherwise, if the set contains only methods, then this group of methods is the result of the lookup.
382382
- Otherwise, the lookup is ambiguous, and a binding-time error occurs.
383383
384-
For member lookups in types other than type parameters and interfaces, and member lookups in interfaces that are strictly single-inheritance (each interface in the inheritance chain has exactly zero or one direct base interface), the effect of the lookup rules is simply that derived members hide base members with the same name or signature. Such single-inheritance lookups are never ambiguous. The ambiguities that can possibly arise from member lookups in multiple-inheritance interfaces are described in [§19.4.6](interfaces.md#1946-interface-member-access).
384+
For member lookups in types other than type parameters and interfaces, and member lookups in interfaces that are strictly single-inheritance (each interface in the inheritance chain has exactly zero or one direct base interface), the effect of the lookup rules is simply that derived members hide base members with the same name or signature. Such single-inheritance lookups are never ambiguous. The ambiguities that can possibly arise from member lookups in multiple-inheritance interfaces are described in [§19.4.11](interfaces.md#19411-interface-member-access).
385385
386386
> *Note*: This phase only accounts for one kind of ambiguity. If the member lookup results in a method group, further uses of method group may fail due to ambiguity, for example as described in [§12.6.4.1](expressions.md#12641-general) and [§12.6.6.2](expressions.md#12662-invocations-on-boxed-instances). *end note*
387387

standard/grammar.md

Lines changed: 9 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2537,52 +2537,15 @@ interface_body
25372537
25382538
// Source: §19.4.1 General
25392539
interface_member_declaration
2540-
: interface_method_declaration
2541-
| interface_property_declaration
2542-
| interface_event_declaration
2543-
| interface_indexer_declaration
2544-
;
2545-
2546-
// Source: §19.4.2 Interface methods
2547-
interface_method_declaration
2548-
: attributes? 'new'? return_type interface_method_header
2549-
| attributes? 'new'? ref_kind ref_return_type interface_method_header
2550-
;
2551-
2552-
interface_method_header
2553-
: identifier '(' parameter_list? ')' ';'
2554-
| identifier type_parameter_list '(' parameter_list? ')'
2555-
type_parameter_constraints_clause* ';'
2556-
;
2557-
2558-
// Source: §19.4.3 Interface properties
2559-
interface_property_declaration
2560-
: attributes? 'new'? type identifier '{' interface_accessors '}'
2561-
| attributes? 'new'? ref_kind type identifier '{' ref_interface_accessor '}'
2562-
;
2563-
2564-
interface_accessors
2565-
: attributes? 'get' ';'
2566-
| attributes? 'set' ';'
2567-
| attributes? 'get' ';' attributes? 'set' ';'
2568-
| attributes? 'set' ';' attributes? 'get' ';'
2569-
;
2570-
2571-
ref_interface_accessor
2572-
: attributes? 'get' ';'
2573-
;
2574-
2575-
// Source: §19.4.4 Interface events
2576-
interface_event_declaration
2577-
: attributes? 'new'? 'event' type identifier ';'
2578-
;
2579-
2580-
// Source: §19.4.5 Interface indexers
2581-
interface_indexer_declaration
2582-
: attributes? 'new'? type 'this' '[' parameter_list ']'
2583-
'{' interface_accessors '}'
2584-
| attributes? 'new'? ref_kind type 'this' '[' parameter_list ']'
2585-
'{' ref_interface_accessor '}'
2540+
: constant_declaration
2541+
| field_declaration
2542+
| method_declaration
2543+
| property_declaration
2544+
| event_declaration
2545+
| indexer_declaration
2546+
| static_constructor_declaration
2547+
| operator_declaration
2548+
| type_declaration
25862549
;
25872550
25882551
// Source: §20.2 Enum declarations

0 commit comments

Comments
 (0)