Skip to content

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

@smoothdeveloper

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 ...'.

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