diff --git a/src/fsharp/MethodOverrides.fs b/src/fsharp/MethodOverrides.fs index 2ba55b7f75f..8a74567bde5 100644 --- a/src/fsharp/MethodOverrides.fs +++ b/src/fsharp/MethodOverrides.fs @@ -302,8 +302,7 @@ module DispatchSlotChecking = |> not if moreThanOnePossibleDispatchSlot then - // Error will be reported below in CheckOverridesAreAllUsedOnce - () + noimpl() elif argTys.Length <> vargtys.Length then fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range)) diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_OverloadMismatch.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_OverloadMismatch.fs new file mode 100644 index 00000000000..6a110a839cc --- /dev/null +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_OverloadMismatch.fs @@ -0,0 +1,14 @@ +//No implementation was given for + +open System +open System.IO +type IFoo = + abstract member Foo : t:Type * r:TextReader -> obj + abstract member Foo<'t> : TextReader -> 't + + +type Foo() = + interface IFoo with + member x.Foo(t, reader) = obj() + +exit 1 diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/env.lst b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/env.lst index 7a3e95f230e..a7384556634 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/env.lst +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/env.lst @@ -29,6 +29,7 @@ NOMONO,NoMT SOURCE=ConsumeOverloadGenericMethods.fs SCFLAGS="-r:lib.dll" PRECMD= SOURCE=SlowOverloadResolution.fs # SlowOverloadResolution.fs SOURCE=E_OverloadCurriedFunc.fs # E_OverloadCurriedFunc.fs + SOURCE=E_OverloadMismatch.fs # E_OverloadMismatch.fs SOURCE=NoWarningWhenOverloadingInSubClass01.fs SCFLAGS="--warnaserror" # NoWarningWhenOverloadingInSubClass01.fs SOURCE=E_UnsolvableConstraints01.fs SCFLAGS="--test:ErrorRanges" # E_UnsolvableConstraints01.fs