dotnet/roslyn
diagnostic for override in Interface should suggest using explicit interface implementation instead
Aperta
#39.940 aperta il 21 nov 2019
Area-CompilersConcept-Diagnostic ClarityFeature - Default Interface ImplFeature Requesthelp wanted
Metriche repository
- Star
- (20.414 stelle)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
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