-
Notifications
You must be signed in to change notification settings - Fork 826
Description
Repro steps
Compile the following code using .NET SDK 8.0.300
module private PrivateModule =
let moduleValue = 1
let inline getModuleValue () =
moduleValue
[<EntryPoint>]
let main argv =
// [FS1118] Failed to inline the value 'getModuleValue' marked 'inline', perhaps because a recursive value was marked 'inline'
// (fixed by making PrivateModule internal instead of private)
PrivateModule.getModuleValue () |> ignore
0
Expected behavior
Compiles without warnings, as it did up to .NET SDK 8.0.205
Actual behavior
Compiles with 3 warnings:
Program.fs(11,5): Warning FS1118 : Failed to inline the value 'getModuleValue' marked 'inline', perhaps because a recursive value was marked 'inline'
Program.fs(11,5): Warning FS1118 : Failed to inline the value 'getModuleValue' marked 'inline', perhaps because a recursive value was marked 'inline'
Program.fs(11,5): Warning FS1118 : Failed to inline the value 'getModuleValue' marked 'inline', perhaps because a recursive value was marked 'inline'
Known workarounds
Make the module internal
instead.
I don't know whether the function was actually being inlined before or not. If not then I guess the warning is better than no warning, but:
- it seems strange that the module would need to be internal to inline it
- the warning message is confusing
- the warning message appears 3 times for the same call
Metadata
Metadata
Assignees
Type
Projects
Status