来自#5227
使用以下工具
Microsoft Visual Studio Community 2017预览版本15.8.0预览版2.0 VisualStudio.15.Preview / 15.8.0-pre.2.0 + 27729.1 Windows 10上的Microsoft .NET Framework版本4.7.02558 >
复制步骤
namespace Ns1 #nowarn "40" open FSharp.Data.Sql [<AutoOpen>] module Definitions = let [<Literal>] connString = @"Valid connection string" let t1 = T1() //T1 not defined type T1() = static member f1() = connString type amplaSQL = SqlDataProvider<ConnectionString = connString>
按预期,'let t1 = T1()'给出错误,该错误是文件后面定义的T1类型。 这就是rec名称空间应该允许的
预期行为
没有错误
实际行为
正如预期的那样,以前的错误消失了,因为即使在受影响的行中也知道T1。但是,最后一个代码行出现了一个新的意外错误,抱怨没有定义connString
namespace rec Ns1 #nowarn "40" open FSharp.Data.Sql [<AutoOpen>] module Definitions = let [<Literal>] connString = @"Valid connection string" let t1 = T1() type T1() = static member f1() = connString type amplaSQL = SqlDataProvider<ConnectionString = connString> //connString not defined
问题:这是预期的行为(我未正确使用rec名称空间吗?)还是F#编译器问题?