Skip to content

Commit 7ea7cde

Browse files
authored
Workaround for target assemblies where packages with transitive references contain type providers (#388)
* compute correct referenced assemblies * apply fix * update template paket.lock * add testing * fix lang version
1 parent 6a9f05e commit 7ea7cde

14 files changed

+444
-748
lines changed

src/FSharp.TypeProviders.SDK.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<Description>The core implementation of an F# type provider</Description>
1111
<Tags>F# fsharp typeprovider</Tags>
1212
<GenerateDocumentationFile>true</GenerateDocumentationFile>
13+
<LangVersion>5.0</LangVersion>
1314
</PropertyGroup>
1415
<ItemGroup>
1516
<Compile Include="AssemblyInfo.fs" />

src/ProvidedTypes.fs

Lines changed: 169 additions & 46 deletions
Large diffs are not rendered by default.

src/ProvidedTypes.fsi

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation 2005-2014 and other contributors.
1+
// Copyright (c) Microsoft Corporation 2005-2014 and other contributors.
22
// This sample code is provided "as is" without warranty of any kind.
33
// We disclaim all warranties, either express or implied, including the
44
// warranties of merchantability and fitness for a particular purpose.
@@ -404,9 +404,6 @@ type ProvidedTypesContext =
404404
/// Try to find the given target assembly in the context
405405
member TryBindSimpleAssemblyNameToTarget: assemblyName: string -> Choice<Assembly, exn>
406406

407-
/// Get the list of referenced assemblies determined by the type provider configuration
408-
member ReferencedAssemblyPaths: string list
409-
410407
/// Get the resolved referenced assemblies determined by the type provider configuration
411408
member GetTargetAssemblies : unit -> Assembly[]
412409

@@ -509,8 +506,7 @@ type TypeProviderForNamespaces =
509506

510507
#if !NO_GENERATIVE
511508
/// Register that a given file is a provided generated target assembly, e.g. an assembly produced by an external
512-
/// code generation tool. This assembly should be a target assembly, i.e. use the same asssembly references
513-
/// as given by TargetContext.ReferencedAssemblyPaths
509+
/// code generation tool. This assembly should be a target assembly.
514510
member RegisterGeneratedTargetAssembly: fileName: string -> Assembly
515511
#endif
516512

@@ -557,4 +553,3 @@ module internal AssemblyReader =
557553

558554
val GetWeakReaderCache : unit -> System.Collections.Concurrent.ConcurrentDictionary<(string * string), DateTime * WeakReference<ILModuleReader>>
559555
val GetStrongReaderCache : unit -> System.Collections.Concurrent.ConcurrentDictionary<(string * string), DateTime * int * ILModuleReader>
560-

templates/content/basic/paket.lock

Lines changed: 183 additions & 641 deletions
Large diffs are not rendered by default.

tests/BasicErasedProvisionTests.fs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
#if INTERACTIVE
2-
#load "../src/ProvidedTypes.fsi" "../src/ProvidedTypes.fs"
3-
#load "../src/ProvidedTypesTesting.fs"
4-
5-
#else
6-
71
module TPSDK.BasicErasedTests
8-
#endif
92

103
open System
114
open System.Reflection
@@ -451,7 +444,7 @@ type ErasingProviderWithCustomAttributes (config : TypeProviderConfig) as this =
451444
this.AddNamespace(ns, createTypes())
452445

453446
[<Fact>]
454-
let ``ErasingConstructorProvider generates for .NET Standard 2.0 correctly``() : unit =
447+
let ``ErasingConstructorProvider generates for netstandard20 correctly``() : unit =
455448
printfn "--------- Generating code for .NET Standard 2.0 ------"
456449
let res = testCrossTargeting (Targets.DotNetStandard20FSharpRefs()) (fun args -> new ErasingConstructorProvider(args)) [| |]
457450
Assert.False(res.Contains "[FSharp.Core, Version=3.259.4.1")

tests/BasicGenerativeProvisionTests.fs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
#if INTERACTIVE
2-
#load "../src/ProvidedTypes.fsi" "../src/ProvidedTypes.fs"
3-
#load "../src/ProvidedTypesTesting.fs"
4-
5-
#else
6-
module TPSDK.Tests.BasicGenerativeTests
7-
#endif
1+
module TPSDK.BasicGenerativeTests
82

93
open System
104
open System.IO

tests/FSharp.TypeProviders.SDK.Tests.fsproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>net5.0</TargetFramework>
55
<IsPackable>false</IsPackable>
6+
<LangVersion>5.0</LangVersion>
67
</PropertyGroup>
78
<ItemGroup>
89
<None Include="paket.references" />
@@ -17,6 +18,7 @@
1718
<Compile Include="GenerativeEnumsProvisionTests.fs" />
1819
<Compile Include="GenerativeInterfacesTests.fs" />
1920
<Compile Include="GenerativeAbstractClassesTests.fs" />
21+
<Compile Include="ReferencedAssemblies.fs" />
2022
</ItemGroup>
2123
<ItemGroup>
2224
<ProjectReference Include="..\src\FSharp.TypeProviders.SDK.fsproj" />

tests/GeneratedCodeTests.fs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
#if INTERACTIVE
2-
#load "../src/ProvidedTypes.fsi" "../src/ProvidedTypes.fs"
3-
#load "../src/ProvidedTypesTesting.fs"
4-
5-
#else
6-
71
module TPSDK.GeneratedCodeTests
8-
#endif
92

103
open System
114
open System.Reflection

tests/GeneratedOpTests.fs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
#if INTERACTIVE
2-
#load "../src/ProvidedTypes.fsi" "../src/ProvidedTypes.fs"
3-
#load "../src/ProvidedTypesTesting.fs"
4-
5-
#else
6-
71
module TPSDK.GeneratedOpTests
8-
#endif
92

103
open System
114
open System.Reflection

tests/GenerativeAbstractClassesTests.fs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
#if INTERACTIVE
2-
#load "../src/ProvidedTypes.fsi" "../src/ProvidedTypes.fs"
3-
#load "../src/ProvidedTypesTesting.fs"
4-
5-
#else
6-
7-
module FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests
8-
#endif
1+
module TPSDK.GenerativeAbstractClassesTests
92

103
#nowarn "760" // IDisposable needs new
114

0 commit comments

Comments
 (0)