dotnet/roslyn
View on GitHubdiagnostic for override in Interface should suggest using explicit interface implementation instead
Open
#39,940 opened on Nov 21, 2019
Area-CompilersConcept-Diagnostic ClarityFeature - Default Interface ImplFeature Requesthelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (Avg merge 6d 17h) (256 merged PRs in 30d)
Description
Version Used: VS 16.4 preview 4
Steps to Reproduce:
The following code fails to compile:
public interface I {
abstract void M();
}
public interface I1 : I {
override void M() {}
}
public class C : I1 {}
The correct code should be:
public interface I {
abstract void M();
}
public interface I1 : I {
void I.M() {}
}
public class C : I1 {}
However it's not immediately obvious that's the case, and there's nothing pointing you to use explicit interface implementation instead.
Expected Behavior:
DIagnostic should be:
error CS0106: The modifier 'override' is not valid for this item. Use explicit interface implementation
void I.Minstead.
Ideally there should also be a code fix for this.
Actual Behavior:
error CS0106: The modifier 'override' is not valid for this item