Inheritance F#4.0,继承抛出FS0073内部错误:mustinline值';Foo';未推断为具有已知值

Inheritance F#4.0,继承抛出FS0073内部错误:mustinline值';Foo';未推断为具有已知值,inheritance,compiler-errors,f#,inline,f#-4.0,Inheritance,Compiler Errors,F#,Inline,F# 4.0,我意识到这一点,但我敢冒着被当作复制品关闭的风险,因为最初的问题已经三年了,而我们现在是两个主要的F#版本 更新:我有,但我仍然很好奇是否存在解决方法 遵循F#的经典OO范式,我尝试通过基类继承共享成员,但在内联方法上立即出现以下错误(在这种特殊情况下,确实需要内联) 错误FS0073:内部错误:未推断mustinline值“SomethingElse”具有已知值 错误FS1113:值“SomethingElse”标记为内联,但其实现使用了无法充分访问的内部或私有函数 Visual Studio

我意识到这一点,但我敢冒着被当作复制品关闭的风险,因为最初的问题已经三年了,而我们现在是两个主要的F#版本

更新:我有,但我仍然很好奇是否存在解决方法

遵循F#的经典OO范式,我尝试通过基类继承共享成员,但在内联方法上立即出现以下错误(在这种特殊情况下,确实需要内联)

错误FS0073:内部错误:未推断mustinline值“SomethingElse”具有已知值
错误FS1113:值“SomethingElse”标记为内联,但其实现使用了无法充分访问的内部或私有函数

Visual Studio 2015中使用F#4.0引发此错误的最小化示例:

我很好奇。第一个错误似乎表明类型推断失败。但是,添加特定类型的装饰似乎没有帮助

错误二表明存在被认为无法访问的隐藏成员。我找不到。添加一个显式的公共成员来愚弄编译器也无济于事

到目前为止,我的结论是:在一个类中有任何内联实例成员(它不会发生在静态成员上)似乎会导致编译错误。也许这类似于不允许内联接口成员,这是可以理解的,但在这种情况下,非继承成员仍然可以标记为内联


在过去的三年里,有什么想法和/或解决办法吗?

这个问题的正确答案是:这是一个bug

如前所述,该问题已得到确认,同时已得到修复,并将成为F#下一次更新的一部分


该问题的修复日期(合并到主分支机构的日期为2016年2月)表明它要么属于更新3(但我不认为它在那里工作),要么属于即将推出的F#4.1。

您是否尝试过在github上通过电子邮件发送fsbug/提出问题。这可能是处理任何内部错误时应该做的事情。我认为,任何时候你看到内部错误,从定义上来说,它就是一个错误。@JohnPalmer,你是对的。
type A() =
    static member inline dosomething() = ()

type B() =
    inherit A()
    member inline this.SomethingElse a = a + 10