From e246c930022f72c4d4dc11273bd170947fe06086 Mon Sep 17 00:00:00 2001 From: nojaf Date: Wed, 10 Aug 2022 14:42:07 +0200 Subject: [PATCH] Desugar SynMemberDefns of SynExceptionDefn before type checking. --- src/Compiler/Checking/CheckDeclarations.fs | 3 ++- .../TypeChecks/CheckDeclarationsTests.fs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index 08bffa54a57..23b08bd45ee 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -4635,7 +4635,8 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem let env = MutRecBindingChecking.TcModuleAbbrevDecl cenv scopem env (id, p, m) return ([], [], []), env, env - | SynModuleDecl.Exception (edef, m) -> + | SynModuleDecl.Exception (SynExceptionDefn(exnRepr, withKeyword, ms, mExDefn), m) -> + let edef = SynExceptionDefn(exnRepr, withKeyword, desugarGetSetMembers ms, mExDefn) let binds, decl, env = TcExceptionDeclarations.TcExnDefn cenv env parent (edef, scopem) let defn = TMDefRec(true, [], [decl], binds |> List.map ModuleOrNamespaceBinding.Binding, m) return ([defn], [], []), env, env diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/CheckDeclarationsTests.fs b/tests/FSharp.Compiler.ComponentTests/TypeChecks/CheckDeclarationsTests.fs index 7aa5d1d56f2..1be9ceb6910 100644 --- a/tests/FSharp.Compiler.ComponentTests/TypeChecks/CheckDeclarationsTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/TypeChecks/CheckDeclarationsTests.fs @@ -90,6 +90,19 @@ namespace FSharpTest type Tree = | Empty | Children of Tree +""" + |> compile + |> shouldSucceed + |> ignore + + [] + let ``CheckingExceptionDeclarations - SynMemberDefn.GetSetMember`` () = + FSharp """ +namespace FSharpTest + +exception CustomException of details: string + with + member self.Details with get (): string = self.details """ |> compile |> shouldSucceed