Skip to content

Define term "derived interface" #680

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: draft-v8
Choose a base branch
from

Conversation

RexJaeschke
Copy link
Contributor

The C# spec defines the terms base class, derived class, and base interface, but not “derived interface.” However, it uses the term “derived interface” or “derived [type] member” a few times.

As I complete the spec for the V8 feature, “Default member implementations in interfaces,” I will add more uses of the term “derived interface.”

@RexJaeschke RexJaeschke requested a review from jskeet December 5, 2022 11:55
@RexJaeschke RexJaeschke self-assigned this Dec 5, 2022
Copy link
Contributor

@jskeet jskeet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but would appreciate others reviewing before we merge.

Copy link
Contributor

@MadsTorgersen MadsTorgersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Copy link
Member

@BillWagner BillWagner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM @RexJaeschke

Let's :shiopit:

@Nigel-Ecma
Copy link
Contributor

Nigel-Ecma commented Dec 5, 2022 via email

Copy link
Contributor

@Nigel-Ecma Nigel-Ecma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to recommend this is made a draft and left until we have looked at the default member implementations.

C# (originally?) is a single inheritance language which adopted the CLI model that interfaces no not inherit but rather the "base" interface list is a list of "adopting classes must also implement".

IIRC even the use of the word "inherit" in §18.1 "An interface may inherit from multiple base interfaces" was debated…

In the Annotated Standard there are annotations explaining that interface "inheritance" is not the same as class inheritance.

Now default member implementation may to change how we describe this going forward, but I think we need to look at it and make sure the Standard is really clear on what "derived" means in this case.

On a minor point the current text defines every interface as a derived one – as it only may have base interfaces and surely to be derived you need 1 or more.

@RexJaeschke RexJaeschke marked this pull request as draft December 6, 2022 17:15
@RexJaeschke RexJaeschke added this to the C# 8.0 milestone Dec 6, 2022
@BillWagner
Copy link
Member

This PR targets "draft-v7", but its milestone is set for V8. We should resolve that.

@RexJaeschke @jskeet

@RexJaeschke
Copy link
Contributor Author

@BillWagner Initially, this was intended to change draft-v7, and I probably had that as the milestone. However, Nigel proposed we defer this until we deal with “Default member implementations in interfaces” in v8, so I changed the milestone to v8.

What are our options w.r.t GitHub? Can we change the base from v7 to v8, or do I need to close this PR and create one against v8 instead?

@BillWagner BillWagner changed the base branch from draft-v7 to draft-v8 February 6, 2023 15:05
@BillWagner
Copy link
Member

I changed the base branch from draft-v7 to draft-v8.

@BillWagner
Copy link
Member

rebased on the latest draft v8 on 09/25/2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants