From ab57e15cf2139d2ec01bd2a96ac94399251c93e0 Mon Sep 17 00:00:00 2001 From: Tomas Grosup <tomasgrosup@microsoft.com> Date: Thu, 26 Sep 2024 15:17:58 +0200 Subject: [PATCH] Treat System.Private.CoreLib as a system lib for extension method search --- src/Compiler/AbstractIL/ilread.fs | 1 + .../FSharpScriptTests.fs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/Compiler/AbstractIL/ilread.fs b/src/Compiler/AbstractIL/ilread.fs index 1535078bfe0..bfbf09c5964 100644 --- a/src/Compiler/AbstractIL/ilread.fs +++ b/src/Compiler/AbstractIL/ilread.fs @@ -2149,6 +2149,7 @@ and typeDefReader ctxtH : ILTypeDefStored = ctxt.fileName.EndsWith("System.Runtime.dll") || ctxt.fileName.EndsWith("mscorlib.dll") || ctxt.fileName.EndsWith("netstandard.dll") + || ctxt.fileName.EndsWith("System.Private.CoreLib.dll") while attrIdx <= attrsEndIdx && not containsExtensionMethods do let mutable addr = ctxt.rowAddr TableNames.CustomAttribute attrIdx diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs index 0e8175d950d..04039f315e4 100644 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs +++ b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs @@ -352,6 +352,22 @@ tInput.Length let value = opt.Value Assert.Equal(4L, downcast value.ReflectionValue) + [<Fact>] + member _.``ML - use assembly with ref dependencies and without refing SMemory``() = + let code = """ +#r "nuget:Microsoft.ML.OnnxTransformer,1.4.0" + +open System +open System.Numerics.Tensors +let inputValues = [| 12.0; 10.0; 17.0; 5.0 |] +let tInput = new DenseTensor<float>(inputValues.AsMemory(), new ReadOnlySpan<int>([|4|])) +tInput.Length +""" + use script = new FSharpScript(additionalArgs=[| "/usesdkrefs-" |]) + let opt = script.Eval(code) |> getValue + let value = opt.Value + Assert.Equal(4L, downcast value.ReflectionValue) + [<Fact>] member _.``System.Device.Gpio - Ensure we reference the runtime version of the assembly``() = let code = """