Improve error recovery for: alias a struct anonymous record
type R = struct {| S: string |}
Expected: this works
Actual:

Does struct keyword work with records at all?
Nope, for that you use the attribute on the definition. But struct { |...|} is the anon record syntax, so it's sort of an odd point.
Indeed. Somehow the struct {| … |} syntax works in Visual Studio but not in command line fsi on my PC. Hmm.
This is by design. Parentheses are required. There is a type declaration form type R - struct ... end and that takes precedence. I'll note this for clarification in the language spec or RFC
type R = (struct {| S: string |})
Re-opening and reclassifying since the error recovery here is really, really awful:
There is no hint at all that you need to add parentheses and it destroys your editor afterwards.