-
Notifications
You must be signed in to change notification settings - Fork 22
Description
I propose we add #elif to the preprocessor grammar as part of the #if .. #else .. #endif block.
The existing way of approaching this problem in F# is: Nesting another #if under #else.
Pros and Cons
The advantages of making this adjustment to F# are: alignment with C# and simpler syntax.
The disadvantages of making this adjustment to F# are: none (well, it's work to implement).
Motivation
F# seems to have #elif preprocessor directive / pragma missing:
https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-directives#preprocessor-directives
I know it's not good practice to use lot of these, I'm not trying to do a templating engine, I would just like to do a simple switch like this:
[<Literal>]
let myPath =
#if WIN64
"/library/x64/runtime.dll"
#elif WIN86
"/library/x86/runtime.dll"
#elif MAC
"/library/iOS/runtime-osx.dll"
#else
"/library/unix/runtime.dll"
#endifThe current workaround:
[<Literal>]
let myPath =
#if WIN64
"/library/x64/runtime.dll"
#endif
#if WIN86
"/library/x86/runtime.dll"
#endif
#if MAC
"/library/iOS/runtime-osx.dll"
#endif
#if !WIN64 && !WIN86 && !MAC
"/library/unix/runtime.dll"
#endifExtra information
Estimated cost (XS, S, M, L, XL, XXL): S
Related suggestions: #273
Affidavit (please submit!)
Please tick these items by placing a cross in the box:
- This is not a question (e.g. like one you might ask on StackOverflow) and I have searched StackOverflow for discussions of this issue
- This is a language change and not purely a tooling change (e.g. compiler bug, editor support, warning/error messages, new warning, non-breaking optimisation) belonging to the compiler and tooling repository
- This is not something which has obviously "already been decided" in previous versions of F#. If you're questioning a fundamental design decision that has obviously already been taken (e.g. "Make F# untyped") then please don't submit it
- I have searched both open and closed suggestions on this site and believe this is not a duplicate (Allow extended #if grammar #273 is similar, but not a duplicate)
Please tick all that apply:
- This is not a breaking change to the F# language design
- I or my company would be willing to help implement and/or test this
For Readers
If you would like to see this issue implemented, please click the 👍 emoji on this issue. These counts are used to generally order the suggestions by engagement.
Moved from: dotnet/fsharp#17282