dotnet/roslyn
diagnostic for override in Interface should suggest using explicit interface implementation instead
Aberta
#39.940 aberto em 21 de nov. de 2019
Area-CompilersConcept-Diagnostic ClarityFeature - Default Interface ImplFeature Requesthelp wanted
Métricas do repositório
- Stars
- (20.414 estrelas)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (256 fundiu PRs em 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