-
Notifications
You must be signed in to change notification settings - Fork 830
Closed
Labels
Description
This appears to be a regression between core sdk 6.0.302 and 6.0.400 on Linux. The following builds with sdk 6.0.302:
exception CustomException of details: string
with
member self.Details with get (): string = self.detailsOn 6.0.400, it fails with the following error:
❯ cat test.fsx
exception CustomException of details: string
with
member self.Details with get (): string = self.details
❯ dotnet fsi test.fsx
/home/chrisv/code/test.fsx(3,10): error FS0073: internal error: Unexpected definition (GetSetMember
(Some
(SynBinding
(None, Normal, false, false, [],
PreXmlMerge
(PreXmlDoc ((3,9), FSharp.Compiler.Xml.XmlDocCollector), PreXmlDocEmpty),
SynValData
(Some
{ IsInstance = true
IsDispatchSlot = false
IsOverrideOrExplicitImpl = false
IsFinal = false
MemberKind = PropertyGet
Trivia =
{ MemberRange = Some /home/chrisv/code/test.fsx (3,9--3,15)
OverrideRange = None
AbstractRange = None
StaticRange = None
DefaultRange = None } },
SynValInfo
([[SynArgInfo ([], false, None)]; []],
SynArgInfo ([], false, None)), None),
LongIdent
(SynLongIdent
([self; Details], [/home/chrisv/code/test.fsx (3,20--3,21)],
[None; None]), Some get, None,
Pats
[Paren
(Const (Unit, /home/chrisv/code/test.fsx (3,38--3,40)),
/home/chrisv/code/test.fsx (3,38--3,40))], None,
/home/chrisv/code/test.fsx (3,34--3,40)),
Some
(SynBindingReturnInfo
(LongIdent (SynLongIdent ([string], [], [None])),
/home/chrisv/code/test.fsx (3,42--3,48), [])),
Typed
(LongIdent
(false,
SynLongIdent
([self; details], [/home/chrisv/code/test.fsx (3,55--3,56)],
[None; None]), None, /home/chrisv/code/test.fsx (3,51--3,63)),
LongIdent (SynLongIdent ([string], [], [None])),
/home/chrisv/code/test.fsx (3,51--3,63)),
/home/chrisv/code/test.fsx (3,34--3,40), NoneAtInvisible,
{ LetKeyword = None
EqualsRange = Some /home/chrisv/code/test.fsx (3,49--3,50) })), None,
/home/chrisv/code/test.fsx (3,9--3,63),
{ WithKeyword = /home/chrisv/code/test.fsx (3,29--3,33)
GetKeyword = Some /home/chrisv/code/test.fsx (3,34--3,37)
AndKeyword = None
SetKeyword = None }),
ContainerInfo
(Parent FSI_0001,
Some
(MemberOrValContainerInfo (CustomException, None, None, NoSafeInitInfo, []))))
This also fails when added to Program.fs from dotnet new console --language f#.
Known workarounds
Removing the explicit getter declaration prevents the issue from being encountered:
exception CustomException of details: string with
member self.Details: string = self.detailsRelated information
❯ dotnet fsi --version
Microsoft (R) F# Interactive version 12.0.4.0 for F# 6.0
❯ dotnet --list-sdks
6.0.400 [/usr/share/dotnet/sdk]
❯ uname -a
Linux redacted 5.15.57.1-microsoft-standard-WSL2 #1 SMP Wed Jul 27 02:20:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
❯ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
I have git bisect running to try and narrow this down, I'll update when it completes.
Turnerj and pharnzwurth