Skip to content

internal error when compiling interface implementation lacking an overloaded method implementation #4967

Description

@smoothdeveloper
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()
    //member x.Foo<'t>(reader) = obj() :?> 't

when I try to compile this, I get an internal error:

error FS0193: internal error: Method 'Foo' in type 'Foo' from assembly 'FSI-ASSEMBLY, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

Instead, I'd expect the compiler to give me:

error FS0366: No implementation was given for 'abstract member IFoo.Foo : TextReader -> 't'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions