-
Notifications
You must be signed in to change notification settings - Fork 58
RequireQualifiedAccess section #39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
statements to avoid pitfalls; `AutoOpen` would sidestep this. | ||
#### Use `AutoOpen` and/or ignore `RequireQualifiedAccess` best practice with caution! | ||
|
||
Functions with identical names from different modules will silently "shadow" each other, causing the most recently imported definition to be used instead of the one you might expect. **The compiler will _not_ warn you that this has happened.** Even if your code works, you may encounter compiler errors if the `open` order changes. A [coding convention (MS Learn)](https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/conventions#sort-open-statements-topologically) exists for `open` statements to avoid pitfalls. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this warning about silent meaning changes is not inaccurate, but I can imagine it scaring people into thinking they might as well be using something typeless. I dont know how I'd convey it, but the only real problem it triggers is inferring the wrong type where it's not pinned, which then manifests as an error some distance away in terms of files or compile time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general I like this - just added a pondering comment
docs/fsharp-cheatsheet.md
Outdated
|
||
```fsharp | ||
[<RequireQualifiedAccess>] | ||
module Math = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe a different name e.g. Calcs to not clash with System.Math ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. Done.
Added section for RequireQualifiedAccess, plus slight editing of the preceding "AutoOpen" paragraph, per #31