diff --git a/src/fsharp/tc.fs b/src/fsharp/tc.fs index 515f2f96e7..8129a4d2b3 100755 --- a/src/fsharp/tc.fs +++ b/src/fsharp/tc.fs @@ -13961,6 +13961,7 @@ module EstablishTypeDefinitionCores = begin noAllowNullLiteralAttributeCheck() TcRecdUnionAndEnumDeclarations.CheckUnionCaseName cenv unionCaseName.idText unionCaseName.idRange let unionCase = NewUnionCase unionCaseName unionCaseName.idText [] thisTy [] XmlDoc.Empty tycon.Accessibility + writeFakeUnionCtorsToSink [ unionCase ] MakeUnionRepr [ unionCase ], None, NoSafeInitInfo | SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.ThereWereSignificantParseErrorsSoDoNotTypecheckThisNode, _rhsType,_) -> diff --git a/tests/service/EditorTests.fs b/tests/service/EditorTests.fs index 2afd4c53c0..917300e010 100644 --- a/tests/service/EditorTests.fs +++ b/tests/service/EditorTests.fs @@ -462,4 +462,21 @@ let _ = sprintf "ABCDE" typeCheckResults.GetFormatSpecifierLocations() |> Array.map (fun range -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn) |> shouldEqual [||] + +[] +let ``Single case discreminated union type definition`` () = + let input = + """ +type DU = Case1 +""" + + let file = "/home/user/Test.fsx" + let untyped, typeCheckResults = parseAndTypeCheckFileInProject(file, input) + typeCheckResults.GetAllUsesOfAllSymbolsInFile() + |> Async.RunSynchronously + |> Array.map (fun su -> + let r = su.RangeAlternate + r.StartLine, r.StartColumn, r.EndLine, r.EndColumn) + |> shouldEqual [|(2, 10, 2, 15); (2, 5, 2, 7); (1, 0, 1, 0)|] + \ No newline at end of file