mirror of
				https://github.com/Smaug123/WoofWare.Myriad
				synced 2025-10-31 08:38:59 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			WoofWare.M
			...
			f2922a37a4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | f2922a37a4 | ||
|  | 030d8ffa12 | ||
|  | d86bd743af | ||
|  | dff2431bc8 | 
| @@ -3,13 +3,13 @@ | |||||||
|   "isRoot": true, |   "isRoot": true, | ||||||
|   "tools": { |   "tools": { | ||||||
|     "fantomas": { |     "fantomas": { | ||||||
|       "version": "6.3.3", |       "version": "6.3.0-alpha-007", | ||||||
|       "commands": [ |       "commands": [ | ||||||
|         "fantomas" |         "fantomas" | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|     "fsharp-analyzers": { |     "fsharp-analyzers": { | ||||||
|       "version": "0.25.0", |       "version": "0.24.0", | ||||||
|       "commands": [ |       "commands": [ | ||||||
|         "fsharp-analyzers" |         "fsharp-analyzers" | ||||||
|       ] |       ] | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ root=true | |||||||
|  |  | ||||||
| [*] | [*] | ||||||
| charset=utf-8 | charset=utf-8 | ||||||
|  | end_of_line=crlf | ||||||
| trim_trailing_whitespace=true | trim_trailing_whitespace=true | ||||||
| insert_final_newline=true | insert_final_newline=true | ||||||
| indent_style=space | indent_style=space | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								.github/workflows/dotnet.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								.github/workflows/dotnet.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -28,7 +28,7 @@ jobs: | |||||||
|       with: |       with: | ||||||
|         fetch-depth: 0 # so that NerdBank.GitVersioning has access to history |         fetch-depth: 0 # so that NerdBank.GitVersioning has access to history | ||||||
|     - name: Install Nix |     - name: Install Nix | ||||||
|       uses: cachix/install-nix-action@v26 |       uses: cachix/install-nix-action@v25 | ||||||
|       with: |       with: | ||||||
|         extra_nix_config: | |         extra_nix_config: | | ||||||
|           access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |           access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -49,7 +49,7 @@ jobs: | |||||||
|         with: |         with: | ||||||
|           fetch-depth: 0 # so that NerdBank.GitVersioning has access to history |           fetch-depth: 0 # so that NerdBank.GitVersioning has access to history | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -58,7 +58,7 @@ jobs: | |||||||
|       - name: Build project |       - name: Build project | ||||||
|         run: nix develop --command dotnet build ./WoofWare.Myriad.Plugins/WoofWare.Myriad.Plugins.fsproj |         run: nix develop --command dotnet build ./WoofWare.Myriad.Plugins/WoofWare.Myriad.Plugins.fsproj | ||||||
|       - name: Run analyzers |       - name: Run analyzers | ||||||
|         run: nix run .#fsharp-analyzers -- --project ./WoofWare.Myriad.Plugins/WoofWare.Myriad.Plugins.fsproj --analyzers-path ./.analyzerpackages/g-research.fsharp.analyzers/*/ --verbosity detailed --report ./analysis.sarif --treat-as-error GRA-STRING-001 GRA-STRING-002 GRA-STRING-003 GRA-UNIONCASE-001 GRA-INTERPOLATED-001 GRA-TYPE-ANNOTATE-001 GRA-VIRTUALCALL-001 GRA-IMMUTABLECOLLECTIONEQUALITY-001 GRA-JSONOPTS-001 GRA-LOGARGFUNCFULLAPP-001 GRA-DISPBEFOREASYNC-001 --exclude-analyzers PartialAppAnalyzer |         run: nix run .#fsharp-analyzers -- --project ./WoofWare.Myriad.Plugins/WoofWare.Myriad.Plugins.fsproj --analyzers-path ./.analyzerpackages/g-research.fsharp.analyzers/0.8.0/ --verbosity detailed --report ./analysis.sarif --treat-as-error GRA-STRING-001 GRA-STRING-002 GRA-STRING-003 GRA-UNIONCASE-001 GRA-INTERPOLATED-001 GRA-TYPE-ANNOTATE-001 GRA-VIRTUALCALL-001 GRA-IMMUTABLECOLLECTIONEQUALITY-001 GRA-JSONOPTS-001 GRA-LOGARGFUNCFULLAPP-001 GRA-DISPBEFOREASYNC-001 --exclude-analyzers PartialAppAnalyzer | ||||||
|  |  | ||||||
|   build-nix: |   build-nix: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
| @@ -66,7 +66,7 @@ jobs: | |||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -79,7 +79,7 @@ jobs: | |||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -92,7 +92,7 @@ jobs: | |||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -105,7 +105,7 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@master |       - uses: actions/checkout@master | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -118,7 +118,7 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@master |       - uses: actions/checkout@master | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -132,7 +132,7 @@ jobs: | |||||||
|       with: |       with: | ||||||
|         fetch-depth: 0 # so that NerdBank.GitVersioning has access to history |         fetch-depth: 0 # so that NerdBank.GitVersioning has access to history | ||||||
|     - name: Install Nix |     - name: Install Nix | ||||||
|       uses: cachix/install-nix-action@v26 |       uses: cachix/install-nix-action@v25 | ||||||
|       with: |       with: | ||||||
|         extra_nix_config: | |         extra_nix_config: | | ||||||
|           access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |           access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -188,7 +188,7 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install Nix |       - name: Install Nix | ||||||
|         uses: cachix/install-nix-action@v26 |         uses: cachix/install-nix-action@v25 | ||||||
|         with: |         with: | ||||||
|           extra_nix_config: | |           extra_nix_config: | | ||||||
|             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} |             access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||||||
| @@ -206,25 +206,3 @@ jobs: | |||||||
|           path: packed-attribute |           path: packed-attribute | ||||||
|       - name: Publish to NuGet (attribute) |       - name: Publish to NuGet (attribute) | ||||||
|         run: nix develop --command dotnet nuget push "packed-attribute/WoofWare.Myriad.Plugins.Attributes.*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate |         run: nix develop --command dotnet nuget push "packed-attribute/WoofWare.Myriad.Plugins.Attributes.*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate | ||||||
|  |  | ||||||
|   github-release-plugin: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }} |  | ||||||
|     needs: [all-required-checks-complete] |  | ||||||
|     environment: main-deploy |  | ||||||
|     permissions: |  | ||||||
|       contents: write |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
|       - name: Download NuGet artifact (plugin) |  | ||||||
|         uses: actions/download-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           name: nuget-package-plugin |  | ||||||
|       - name: Download NuGet artifact (attribute) |  | ||||||
|         uses: actions/download-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           name: nuget-package-attribute |  | ||||||
|       - name: Tag and release plugin |  | ||||||
|         env: |  | ||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
|         run: sh .github/workflows/tag.sh |  | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								.github/workflows/tag.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/tag.sh
									
									
									
									
										vendored
									
									
								
							| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
|  |  | ||||||
| find . -maxdepth 1 -type f -name '*.nupkg' -exec sh -c 'tag=$(basename "$1" .nupkg); git tag "$tag"; git push origin "$tag"' shell {} \; |  | ||||||
|  |  | ||||||
| export TAG |  | ||||||
| TAG=$(find . -maxdepth 1 -type f -name 'WoofWare.Myriad.Plugins.*.nupkg' -exec sh -c 'basename "$1" .nupkg' shell {} \; | grep -v Attributes) |  | ||||||
|  |  | ||||||
| case "$TAG" in |  | ||||||
|   *" |  | ||||||
| "*) |  | ||||||
|     echo "Error: TAG contains a newline; multiple plugins found." |  | ||||||
|     exit 1 |  | ||||||
|     ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| # target_commitish empty indicates the repo default branch |  | ||||||
| curl -L -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $GITHUB_TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/Smaug123/WoofWare.Myriad/releases -d '{"tag_name":"'"$TAG"'","target_commitish":"","name":"'"$TAG"'","draft":false,"prerelease":false,"generate_release_notes":false}' |  | ||||||
| @@ -5,7 +5,6 @@ | |||||||
|  |  | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -26,11 +25,10 @@ type internal PublicTypeMock = | |||||||
|  |  | ||||||
|     interface IPublicType with |     interface IPublicType with | ||||||
|         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) |         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) | ||||||
|         member this.Mem2 arg_0_0 = this.Mem2 (arg_0_0) |         member this.Mem2 (arg_0_0) = this.Mem2 (arg_0_0) | ||||||
|         member this.Mem3 (arg_0_0, arg_0_1) = this.Mem3 (arg_0_0, arg_0_1) |         member this.Mem3 (arg_0_0, arg_0_1) = this.Mem3 (arg_0_0, arg_0_1) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -51,11 +49,10 @@ type public PublicTypeInternalFalseMock = | |||||||
|  |  | ||||||
|     interface IPublicTypeInternalFalse with |     interface IPublicTypeInternalFalse with | ||||||
|         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) |         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) | ||||||
|         member this.Mem2 arg_0_0 = this.Mem2 (arg_0_0) |         member this.Mem2 (arg_0_0) = this.Mem2 (arg_0_0) | ||||||
|         member this.Mem3 (arg_0_0, arg_0_1) = this.Mem3 (arg_0_0, arg_0_1) |         member this.Mem3 (arg_0_0, arg_0_1) = this.Mem3 (arg_0_0, arg_0_1) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -74,10 +71,9 @@ type internal InternalTypeMock = | |||||||
|  |  | ||||||
|     interface InternalType with |     interface InternalType with | ||||||
|         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) |         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) | ||||||
|         member this.Mem2 arg_0_0 = this.Mem2 (arg_0_0) |         member this.Mem2 (arg_0_0) = this.Mem2 (arg_0_0) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -96,10 +92,9 @@ type private PrivateTypeMock = | |||||||
|  |  | ||||||
|     interface PrivateType with |     interface PrivateType with | ||||||
|         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) |         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) | ||||||
|         member this.Mem2 arg_0_0 = this.Mem2 (arg_0_0) |         member this.Mem2 (arg_0_0) = this.Mem2 (arg_0_0) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -118,10 +113,9 @@ type private PrivateTypeInternalFalseMock = | |||||||
|  |  | ||||||
|     interface PrivateTypeInternalFalse with |     interface PrivateTypeInternalFalse with | ||||||
|         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) |         member this.Mem1 (arg_0_0, arg_0_1) = this.Mem1 (arg_0_0, arg_0_1) | ||||||
|         member this.Mem2 arg_0_0 = this.Mem2 (arg_0_0) |         member this.Mem2 (arg_0_0) = this.Mem2 (arg_0_0) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -137,10 +131,9 @@ type internal VeryPublicTypeMock<'a, 'b> = | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     interface VeryPublicType<'a, 'b> with |     interface VeryPublicType<'a, 'b> with | ||||||
|         member this.Mem1 arg_0_0 = this.Mem1 (arg_0_0) |         member this.Mem1 (arg_0_0) = this.Mem1 (arg_0_0) | ||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| /// Mock record type for an interface | /// Mock record type for an interface | ||||||
| @@ -166,9 +159,9 @@ type internal CurriedMock<'a> = | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     interface Curried<'a> with |     interface Curried<'a> with | ||||||
|         member this.Mem1 arg_0_0 arg_1_0 = this.Mem1 (arg_0_0) (arg_1_0) |         member this.Mem1 (arg_0_0) (arg_1_0) = this.Mem1 (arg_0_0) (arg_1_0) | ||||||
|         member this.Mem2 (arg_0_0, arg_0_1) arg_1_0 = this.Mem2 (arg_0_0, arg_0_1) (arg_1_0) |         member this.Mem2 (arg_0_0, arg_0_1) (arg_1_0) = this.Mem2 (arg_0_0, arg_0_1) (arg_1_0) | ||||||
|         member this.Mem3 ((arg_0_0, arg_0_1)) arg_1_0 = this.Mem3 (arg_0_0, arg_0_1) (arg_1_0) |         member this.Mem3 ((arg_0_0, arg_0_1)) (arg_1_0) = this.Mem3 (arg_0_0, arg_0_1) (arg_1_0) | ||||||
|  |  | ||||||
|         member this.Mem4 ((arg_0_0, arg_0_1)) ((arg_1_0, arg_1_1)) = |         member this.Mem4 ((arg_0_0, arg_0_1)) ((arg_1_0, arg_1_1)) = | ||||||
|             this.Mem4 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) |             this.Mem4 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) | ||||||
| @@ -178,31 +171,3 @@ type internal CurriedMock<'a> = | |||||||
|  |  | ||||||
|         member this.Mem6 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) = |         member this.Mem6 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) = | ||||||
|             this.Mem6 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) |             this.Mem6 (arg_0_0, arg_0_1) (arg_1_0, arg_1_1) | ||||||
| namespace SomeNamespace |  | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins |  | ||||||
|  |  | ||||||
| /// Mock record type for an interface |  | ||||||
| type internal TypeWithInterfaceMock = |  | ||||||
|     { |  | ||||||
|         /// Implementation of IDisposable.Dispose |  | ||||||
|         Dispose : unit -> unit |  | ||||||
|         Mem1 : string option -> string[] Async |  | ||||||
|         Mem2 : unit -> string[] Async |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /// An implementation where every method throws. |  | ||||||
|     static member Empty : TypeWithInterfaceMock = |  | ||||||
|         { |  | ||||||
|             Dispose = (fun _ -> ()) |  | ||||||
|             Mem1 = (fun x -> raise (System.NotImplementedException "Unimplemented mock function")) |  | ||||||
|             Mem2 = (fun x -> raise (System.NotImplementedException "Unimplemented mock function")) |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|     interface TypeWithInterface with |  | ||||||
|         member this.Mem1 arg_0_0 = this.Mem1 (arg_0_0) |  | ||||||
|         member this.Mem2 () = this.Mem2 (()) |  | ||||||
|  |  | ||||||
|     interface System.IDisposable with |  | ||||||
|         member this.Dispose () : unit = this.Dispose () |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| namespace SomeNamespace | namespace SomeNamespace | ||||||
|  |  | ||||||
| open System |  | ||||||
| open WoofWare.Myriad.Plugins | open WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| [<GenerateMock>] | [<GenerateMock>] | ||||||
| @@ -42,9 +41,3 @@ type Curried<'a> = | |||||||
|     abstract Mem4 : (int * string) -> ('a * int) -> string |     abstract Mem4 : (int * string) -> ('a * int) -> string | ||||||
|     abstract Mem5 : x : int * string -> ('a * int) -> string |     abstract Mem5 : x : int * string -> ('a * int) -> string | ||||||
|     abstract Mem6 : int * string -> y : 'a * int -> string |     abstract Mem6 : int * string -> y : 'a * int -> string | ||||||
|  |  | ||||||
| [<GenerateMock>] |  | ||||||
| type TypeWithInterface = |  | ||||||
|     inherit IDisposable |  | ||||||
|     abstract Mem1 : string option -> string[] Async |  | ||||||
|     abstract Mem2 : unit -> string[] Async |  | ||||||
|   | |||||||
| @@ -12,9 +12,9 @@ | |||||||
|     </ItemGroup> |     </ItemGroup> | ||||||
|  |  | ||||||
|     <ItemGroup> |     <ItemGroup> | ||||||
|         <PackageReference Include="ApiSurface" Version="4.0.33" /> |         <PackageReference Include="ApiSurface" Version="4.0.28" /> | ||||||
|         <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0"/> |         <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0"/> | ||||||
|         <PackageReference Include="NUnit" Version="4.1.0"/> |         <PackageReference Include="NUnit" Version="3.13.3"/> | ||||||
|         <PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/> |         <PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/> | ||||||
|     </ItemGroup> |     </ItemGroup> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -33,12 +33,13 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="ApiSurface" Version="4.0.33"/> |     <PackageReference Include="ApiSurface" Version="4.0.28"/> | ||||||
|     <PackageReference Include="FsCheck" Version="2.16.6"/> |     <PackageReference Include="FsCheck" Version="2.16.6"/> | ||||||
|     <PackageReference Include="FsUnit" Version="6.0.0"/> |     <PackageReference Include="FsUnit" Version="6.0.0"/> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0"/> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/> | ||||||
|     <PackageReference Include="NUnit" Version="4.1.0"/> |     <PackageReference Include="NUnit" Version="4.0.1"/> | ||||||
|     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/> |     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/> | ||||||
|  |     <PackageReference Include="coverlet.collector" Version="6.0.0"/> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| namespace WoofWare.Myriad.Plugins | namespace WoofWare.Myriad.Plugins | ||||||
|  |  | ||||||
| open System.IO |  | ||||||
| open Fantomas.FCS.Syntax | open Fantomas.FCS.Syntax | ||||||
| open Fantomas.FCS.SyntaxTrivia | open Fantomas.FCS.SyntaxTrivia | ||||||
| open Fantomas.FCS.Text.Range | open Fantomas.FCS.Text.Range | ||||||
| @@ -55,7 +54,6 @@ type internal InterfaceType = | |||||||
|     { |     { | ||||||
|         Attributes : SynAttribute list |         Attributes : SynAttribute list | ||||||
|         Name : LongIdent |         Name : LongIdent | ||||||
|         Inherits : SynType list |  | ||||||
|         Members : MemberInfo list |         Members : MemberInfo list | ||||||
|         Properties : PropertyInfo list |         Properties : PropertyInfo list | ||||||
|         Generics : SynTyparDecls option |         Generics : SynTyparDecls option | ||||||
| @@ -133,11 +131,6 @@ module internal AstHelper = | |||||||
|         // TODO: consider Microsoft.FSharp.Option or whatever it is |         // TODO: consider Microsoft.FSharp.Option or whatever it is | ||||||
|         | _ -> false |         | _ -> false | ||||||
|  |  | ||||||
|     let isUnitIdent (ident : SynLongIdent) : bool = |  | ||||||
|         match ident.LongIdent with |  | ||||||
|         | [ i ] when System.String.Equals (i.idText, "unit", System.StringComparison.OrdinalIgnoreCase) -> true |  | ||||||
|         | _ -> false |  | ||||||
|  |  | ||||||
|     let isListIdent (ident : SynLongIdent) : bool = |     let isListIdent (ident : SynLongIdent) : bool = | ||||||
|         match ident.LongIdent with |         match ident.LongIdent with | ||||||
|         | [ i ] when System.String.Equals (i.idText, "list", System.StringComparison.OrdinalIgnoreCase) -> true |         | [ i ] when System.String.Equals (i.idText, "list", System.StringComparison.OrdinalIgnoreCase) -> true | ||||||
| @@ -349,18 +342,7 @@ module internal AstHelper = | |||||||
|                                 } |                                 } | ||||||
|                                 |> List.singleton |                                 |> List.singleton | ||||||
|                         } |                         } | ||||||
|                     | arg -> |                     | _ -> failwith $"Unrecognised args in interface method declaration: %+A{args}" | ||||||
|                         { |  | ||||||
|                             HasParen = false |  | ||||||
|                             Args = |  | ||||||
|                                 { |  | ||||||
|                                     Attributes = [] |  | ||||||
|                                     IsOptional = false |  | ||||||
|                                     Id = None |  | ||||||
|                                     Type = arg |  | ||||||
|                                 } |  | ||||||
|                                 |> List.singleton |  | ||||||
|                         } |  | ||||||
|                     |> fun ty -> |                     |> fun ty -> | ||||||
|                         { ty with |                         { ty with | ||||||
|                             HasParen = ty.HasParen || hasParen |                             HasParen = ty.HasParen || hasParen | ||||||
| @@ -404,26 +386,22 @@ module internal AstHelper = | |||||||
|  |  | ||||||
|         let attrs = attrs |> List.collect (fun s -> s.Attributes) |         let attrs = attrs |> List.collect (fun s -> s.Attributes) | ||||||
|  |  | ||||||
|         let members, inherits = |         let members, properties = | ||||||
|             match synTypeDefnRepr with |             match synTypeDefnRepr with | ||||||
|             | SynTypeDefnRepr.ObjectModel (_kind, members, _) -> |             | SynTypeDefnRepr.ObjectModel (_kind, members, _) -> | ||||||
|                 members |                 members | ||||||
|                 |> List.map (fun defn -> |                 |> List.map (fun defn -> | ||||||
|                     match defn with |                     match defn with | ||||||
|                     | SynMemberDefn.AbstractSlot (slotSig, flags, _, _) -> Choice1Of2 (parseMember slotSig flags) |                     | SynMemberDefn.AbstractSlot (slotSig, flags, _, _) -> parseMember slotSig flags | ||||||
|                     | SynMemberDefn.Inherit (baseType, _asIdent, _) -> Choice2Of2 baseType |  | ||||||
|                     | _ -> failwith $"Unrecognised member definition: %+A{defn}" |                     | _ -> failwith $"Unrecognised member definition: %+A{defn}" | ||||||
|                 ) |                 ) | ||||||
|             | _ -> failwith $"Unrecognised SynTypeDefnRepr for an interface type: %+A{synTypeDefnRepr}" |             | _ -> failwith $"Unrecognised SynTypeDefnRepr for an interface type: %+A{synTypeDefnRepr}" | ||||||
|             |> List.partitionChoice |             |> List.partitionChoice | ||||||
|  |  | ||||||
|         let members, properties = members |> List.partitionChoice |  | ||||||
|  |  | ||||||
|         { |         { | ||||||
|             Members = members |             Members = members | ||||||
|             Properties = properties |             Properties = properties | ||||||
|             Name = interfaceName |             Name = interfaceName | ||||||
|             Inherits = inherits |  | ||||||
|             Attributes = attrs |             Attributes = attrs | ||||||
|             Generics = typars |             Generics = typars | ||||||
|             Accessibility = accessibility |             Accessibility = accessibility | ||||||
| @@ -508,11 +486,6 @@ module internal SynTypePatterns = | |||||||
|             Some innerType |             Some innerType | ||||||
|         | _ -> None |         | _ -> None | ||||||
|  |  | ||||||
|     let (|UnitType|_|) (fieldType : SynType) : unit option = |  | ||||||
|         match fieldType with |  | ||||||
|         | SynType.LongIdent ident when AstHelper.isUnitIdent ident -> Some () |  | ||||||
|         | _ -> None |  | ||||||
|  |  | ||||||
|     let (|ListType|_|) (fieldType : SynType) = |     let (|ListType|_|) (fieldType : SynType) = | ||||||
|         match fieldType with |         match fieldType with | ||||||
|         | SynType.App (SynType.LongIdent ident, _, [ innerType ], _, _, _, _) when AstHelper.isListIdent ident -> |         | SynType.App (SynType.LongIdent ident, _, [ innerType ], _, _, _, _) when AstHelper.isListIdent ident -> | ||||||
|   | |||||||
| @@ -764,10 +764,6 @@ module internal HttpClientGenerator = | |||||||
|         = |         = | ||||||
|         let interfaceType = AstHelper.parseInterface interfaceType |         let interfaceType = AstHelper.parseInterface interfaceType | ||||||
|  |  | ||||||
|         if not (List.isEmpty interfaceType.Inherits) then |  | ||||||
|             failwith |  | ||||||
|                 "HttpClientGenerator does not support inheritance. Remove the `inherit` keyword if you want to use this generator." |  | ||||||
|  |  | ||||||
|         let constantHeaders = |         let constantHeaders = | ||||||
|             interfaceType.Attributes |             interfaceType.Attributes | ||||||
|             |> extractHeaderInformation |             |> extractHeaderInformation | ||||||
|   | |||||||
| @@ -21,9 +21,6 @@ module internal InterfaceMockGenerator = | |||||||
|         | None -> failwith "Expected record field to have a name, but it was somehow anonymous" |         | None -> failwith "Expected record field to have a name, but it was somehow anonymous" | ||||||
|         | Some id -> id |         | Some id -> id | ||||||
|  |  | ||||||
|     [<RequireQualifiedAccess>] |  | ||||||
|     type private KnownInheritance = | IDisposable |  | ||||||
|  |  | ||||||
|     let createType |     let createType | ||||||
|         (spec : GenerateMockOutputSpec) |         (spec : GenerateMockOutputSpec) | ||||||
|         (name : string) |         (name : string) | ||||||
| @@ -32,20 +29,6 @@ module internal InterfaceMockGenerator = | |||||||
|         (fields : SynField list) |         (fields : SynField list) | ||||||
|         : SynModuleDecl |         : SynModuleDecl | ||||||
|         = |         = | ||||||
|         let inherits = |  | ||||||
|             interfaceType.Inherits |  | ||||||
|             |> Seq.map (fun ty -> |  | ||||||
|                 match ty with |  | ||||||
|                 | SynType.LongIdent (SynLongIdent.SynLongIdent (name, _, _)) -> |  | ||||||
|                     match name |> List.map _.idText with |  | ||||||
|                     | [] -> failwith "Unexpected empty identifier in inheritance declaration" |  | ||||||
|                     | [ "IDisposable" ] |  | ||||||
|                     | [ "System" ; "IDisposable" ] -> KnownInheritance.IDisposable |  | ||||||
|                     | _ -> failwithf "Unrecognised inheritance identifier: %+A" name |  | ||||||
|                 | x -> failwithf "Unrecognised type in inheritance: %+A" x |  | ||||||
|             ) |  | ||||||
|             |> Set.ofSeq |  | ||||||
|  |  | ||||||
|         let synValData = |         let synValData = | ||||||
|             { |             { | ||||||
|                 SynMemberFlags.IsInstance = false |                 SynMemberFlags.IsInstance = false | ||||||
| @@ -107,23 +90,6 @@ module internal InterfaceMockGenerator = | |||||||
|                 ) |                 ) | ||||||
|             |> SynBindingReturnInfo.Create |             |> SynBindingReturnInfo.Create | ||||||
|  |  | ||||||
|         let constructorFields = |  | ||||||
|             let extras = |  | ||||||
|                 if inherits.Contains KnownInheritance.IDisposable then |  | ||||||
|                     let unitFun = SynExpr.createLambda "_" SynExpr.CreateUnit |  | ||||||
|  |  | ||||||
|                     [ |  | ||||||
|                         (SynLongIdent.CreateFromLongIdent [ Ident.Create "Dispose" ], true), Some unitFun |  | ||||||
|                     ] |  | ||||||
|                 else |  | ||||||
|                     [] |  | ||||||
|  |  | ||||||
|             let nonExtras = |  | ||||||
|                 fields |  | ||||||
|                 |> List.map (fun field -> (SynLongIdent.CreateFromLongIdent [ getName field ], true), Some failwithFun) |  | ||||||
|  |  | ||||||
|             extras @ nonExtras |  | ||||||
|  |  | ||||||
|         let constructor = |         let constructor = | ||||||
|             SynMemberDefn.Member ( |             SynMemberDefn.Member ( | ||||||
|                 SynBinding.SynBinding ( |                 SynBinding.SynBinding ( | ||||||
| @@ -136,7 +102,12 @@ module internal InterfaceMockGenerator = | |||||||
|                     SynValData.SynValData (Some synValData, SynValInfo.Empty, None), |                     SynValData.SynValData (Some synValData, SynValInfo.Empty, None), | ||||||
|                     constructorIdent, |                     constructorIdent, | ||||||
|                     Some constructorReturnType, |                     Some constructorReturnType, | ||||||
|                     AstHelper.instantiateRecord constructorFields, |                     AstHelper.instantiateRecord ( | ||||||
|  |                         fields | ||||||
|  |                         |> List.map (fun field -> | ||||||
|  |                             ((SynLongIdent.CreateFromLongIdent [ getName field ], true), Some failwithFun) | ||||||
|  |                         ) | ||||||
|  |                     ), | ||||||
|                     range0, |                     range0, | ||||||
|                     DebugPointAtBinding.Yes range0, |                     DebugPointAtBinding.Yes range0, | ||||||
|                     { SynExpr.synBindingTriviaZero true with |                     { SynExpr.synBindingTriviaZero true with | ||||||
| @@ -146,21 +117,6 @@ module internal InterfaceMockGenerator = | |||||||
|                 range0 |                 range0 | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|         let fields = |  | ||||||
|             let extras = |  | ||||||
|                 if inherits.Contains KnownInheritance.IDisposable then |  | ||||||
|                     [ |  | ||||||
|                         SynField.Create ( |  | ||||||
|                             SynType.CreateFun (SynType.CreateUnit, SynType.CreateUnit), |  | ||||||
|                             Ident.Create "Dispose", |  | ||||||
|                             xmldoc = PreXmlDoc.Create " Implementation of IDisposable.Dispose" |  | ||||||
|                         ) |  | ||||||
|                     ] |  | ||||||
|                 else |  | ||||||
|                     [] |  | ||||||
|  |  | ||||||
|             extras @ fields |  | ||||||
|  |  | ||||||
|         let interfaceMembers = |         let interfaceMembers = | ||||||
|             let members = |             let members = | ||||||
|                 interfaceType.Members |                 interfaceType.Members | ||||||
| @@ -194,9 +150,7 @@ module internal InterfaceMockGenerator = | |||||||
|                                                 |> List.mapi (fun i arg -> |                                                 |> List.mapi (fun i arg -> | ||||||
|                                                     arg.Args |                                                     arg.Args | ||||||
|                                                     |> List.mapi (fun j arg -> |                                                     |> List.mapi (fun j arg -> | ||||||
|                                                         match arg.Type with |                                                         SynArgInfo.CreateIdString $"arg_%i{i}_%i{j}" | ||||||
|                                                         | UnitType -> SynArgInfo.SynArgInfo ([], false, None) |  | ||||||
|                                                         | _ -> SynArgInfo.CreateIdString $"arg_%i{i}_%i{j}" |  | ||||||
|                                                     ) |                                                     ) | ||||||
|                                                 ) |                                                 ) | ||||||
|                                         ], |                                         ], | ||||||
| @@ -211,16 +165,8 @@ module internal InterfaceMockGenerator = | |||||||
|                         |> List.mapi (fun i tupledArgs -> |                         |> List.mapi (fun i tupledArgs -> | ||||||
|                             let args = |                             let args = | ||||||
|                                 tupledArgs.Args |                                 tupledArgs.Args | ||||||
|                                 |> List.mapi (fun j ty -> |                                 |> List.mapi (fun j _ -> SynPat.CreateNamed (Ident.Create $"arg_%i{i}_%i{j}")) | ||||||
|                                     match ty.Type with |  | ||||||
|                                     | UnitType -> SynPat.Const (SynConst.Unit, range0) |  | ||||||
|                                     | _ -> SynPat.CreateNamed (Ident.Create $"arg_%i{i}_%i{j}") |  | ||||||
|                                 ) |  | ||||||
|  |  | ||||||
|                             match args with |  | ||||||
|                             | [] -> failwith "somehow got no args at all" |  | ||||||
|                             | [ arg ] -> arg |  | ||||||
|                             | args -> |  | ||||||
|                             SynPat.Tuple (false, args, List.replicate (args.Length - 1) range0, range0) |                             SynPat.Tuple (false, args, List.replicate (args.Length - 1) range0, range0) | ||||||
|                             |> SynPat.CreateParen |                             |> SynPat.CreateParen | ||||||
|                             |> fun i -> if tupledArgs.HasParen then SynPat.Paren (i, range0) else i |                             |> fun i -> if tupledArgs.HasParen then SynPat.Paren (i, range0) else i | ||||||
| @@ -241,11 +187,7 @@ module internal InterfaceMockGenerator = | |||||||
|                             memberInfo.Args |                             memberInfo.Args | ||||||
|                             |> List.mapi (fun i args -> |                             |> List.mapi (fun i args -> | ||||||
|                                 args.Args |                                 args.Args | ||||||
|                                 |> List.mapi (fun j arg -> |                                 |> List.mapi (fun j args -> SynExpr.CreateIdentString $"arg_%i{i}_%i{j}") | ||||||
|                                     match arg.Type with |  | ||||||
|                                     | UnitType -> SynExpr.CreateConst SynConst.Unit |  | ||||||
|                                     | _ -> SynExpr.CreateIdentString $"arg_%i{i}_%i{j}" |  | ||||||
|                                 ) |  | ||||||
|                                 |> SynExpr.CreateParenedTuple |                                 |> SynExpr.CreateParenedTuple | ||||||
|                             ) |                             ) | ||||||
|  |  | ||||||
| @@ -322,100 +264,11 @@ module internal InterfaceMockGenerator = | |||||||
|             | Some (SynAccess.Internal _), _ -> SynAccess.Internal range0 |             | Some (SynAccess.Internal _), _ -> SynAccess.Internal range0 | ||||||
|             | Some (SynAccess.Private _), _ -> SynAccess.Private range0 |             | Some (SynAccess.Private _), _ -> SynAccess.Private range0 | ||||||
|  |  | ||||||
|         let extraInterfaces = |  | ||||||
|             inherits |  | ||||||
|             |> Seq.map (fun inheritance -> |  | ||||||
|                 match inheritance with |  | ||||||
|                 | KnownInheritance.IDisposable -> |  | ||||||
|                     let valData = |  | ||||||
|                         SynValData.SynValData ( |  | ||||||
|                             Some |  | ||||||
|                                 { |  | ||||||
|                                     IsInstance = true |  | ||||||
|                                     IsDispatchSlot = false |  | ||||||
|                                     IsOverrideOrExplicitImpl = true |  | ||||||
|                                     IsFinal = false |  | ||||||
|                                     GetterOrSetterIsCompilerGenerated = false |  | ||||||
|                                     MemberKind = SynMemberKind.Member |  | ||||||
|                                 }, |  | ||||||
|                             valInfo = |  | ||||||
|                                 SynValInfo.SynValInfo ( |  | ||||||
|                                     curriedArgInfos = |  | ||||||
|                                         [ |  | ||||||
|                                             yield |  | ||||||
|                                                 [ |  | ||||||
|                                                     SynArgInfo.SynArgInfo ( |  | ||||||
|                                                         attributes = [], |  | ||||||
|                                                         optional = false, |  | ||||||
|                                                         ident = None |  | ||||||
|                                                     ) |  | ||||||
|                                                 ] |  | ||||||
|                                         ], |  | ||||||
|                                     returnInfo = |  | ||||||
|                                         SynArgInfo.SynArgInfo (attributes = [], optional = false, ident = None) |  | ||||||
|                                 ), |  | ||||||
|                             thisIdOpt = None |  | ||||||
|                         ) |  | ||||||
|  |  | ||||||
|                     let headArgs = [ SynPat.Const (SynConst.Unit, range0) ] |  | ||||||
|  |  | ||||||
|                     let headPat = |  | ||||||
|                         SynPat.LongIdent ( |  | ||||||
|                             SynLongIdent.CreateFromLongIdent [ Ident.Create "this" ; Ident.Create "Dispose" ], |  | ||||||
|                             None, |  | ||||||
|                             None, |  | ||||||
|                             SynArgPats.Pats headArgs, |  | ||||||
|                             None, |  | ||||||
|                             range0 |  | ||||||
|                         ) |  | ||||||
|  |  | ||||||
|                     let binding = |  | ||||||
|                         SynBinding.SynBinding ( |  | ||||||
|                             None, |  | ||||||
|                             SynBindingKind.Normal, |  | ||||||
|                             false, |  | ||||||
|                             false, |  | ||||||
|                             [], |  | ||||||
|                             PreXmlDoc.Empty, |  | ||||||
|                             valData, |  | ||||||
|                             headPat, |  | ||||||
|                             Some ( |  | ||||||
|                                 SynBindingReturnInfo.SynBindingReturnInfo ( |  | ||||||
|                                     SynType.Unit (), |  | ||||||
|                                     range0, |  | ||||||
|                                     [], |  | ||||||
|                                     SynBindingReturnInfoTrivia.Zero |  | ||||||
|                                 ) |  | ||||||
|                             ), |  | ||||||
|                             SynExpr.CreateApp ( |  | ||||||
|                                 SynExpr.CreateLongIdent (SynLongIdent.Create [ "this" ; "Dispose" ]), |  | ||||||
|                                 SynExpr.CreateUnit |  | ||||||
|                             ), |  | ||||||
|                             range0, |  | ||||||
|                             DebugPointAtBinding.Yes range0, |  | ||||||
|                             { |  | ||||||
|                                 LeadingKeyword = SynLeadingKeyword.Member range0 |  | ||||||
|                                 InlineKeyword = None |  | ||||||
|                                 EqualsRange = Some range0 |  | ||||||
|                             } |  | ||||||
|                         ) |  | ||||||
|  |  | ||||||
|                     let mem = SynMemberDefn.Member (binding, range0) |  | ||||||
|  |  | ||||||
|                     SynMemberDefn.Interface ( |  | ||||||
|                         SynType.CreateLongIdent (SynLongIdent.Create [ "System" ; "IDisposable" ]), |  | ||||||
|                         Some range0, |  | ||||||
|                         Some [ mem ], |  | ||||||
|                         range0 |  | ||||||
|                     ) |  | ||||||
|             ) |  | ||||||
|             |> Seq.toList |  | ||||||
|  |  | ||||||
|         let record = |         let record = | ||||||
|             { |             { | ||||||
|                 Name = Ident.Create name |                 Name = Ident.Create name | ||||||
|                 Fields = fields |                 Fields = fields | ||||||
|                 Members = Some ([ constructor ; interfaceMembers ] @ extraInterfaces) |                 Members = Some [ constructor ; interfaceMembers ] | ||||||
|                 XmlDoc = Some xmlDoc |                 XmlDoc = Some xmlDoc | ||||||
|                 Generics = interfaceType.Generics |                 Generics = interfaceType.Generics | ||||||
|                 Accessibility = Some access |                 Accessibility = Some access | ||||||
| @@ -480,6 +333,7 @@ module internal InterfaceMockGenerator = | |||||||
|  |  | ||||||
|         let typeDecl = createType spec name interfaceType docString fields |         let typeDecl = createType spec name interfaceType docString fields | ||||||
|  |  | ||||||
|  |  | ||||||
|         SynModuleOrNamespace.CreateNamespace ( |         SynModuleOrNamespace.CreateNamespace ( | ||||||
|             namespaceId, |             namespaceId, | ||||||
|             decls = (opens |> List.map SynModuleDecl.CreateOpen) @ [ typeDecl ] |             decls = (opens |> List.map SynModuleDecl.CreateOpen) @ [ typeDecl ] | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.9.3]" /> |     <PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.8.0]" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
| </Project> | </Project> | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								nix/deps.nix
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								nix/deps.nix
									
									
									
									
									
								
							| @@ -3,18 +3,23 @@ | |||||||
| {fetchNuGet}: [ | {fetchNuGet}: [ | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "fsharp-analyzers"; |     pname = "fsharp-analyzers"; | ||||||
|     version = "0.25.0"; |     version = "0.24.0"; | ||||||
|     sha256 = "sha256-njfJYi40jNvrD+mgu9LtQw2Omh8P1SSDThesozH0KQY="; |     sha256 = "sha256-cNaM/yHI28sHDGamKMrU237ltOyrR+8vPNUImB5RxjU="; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "fantomas"; |     pname = "fantomas"; | ||||||
|     version = "6.3.3"; |     version = "6.3.0-alpha-007"; | ||||||
|     sha256 = "sha256-02uTwRPJkRZtjJ7fOJdHSvc17DszkXjT5X9jGuRZlA4="; |     sha256 = "sha256-uZw6h6k/DS4BcYtK9cv8TLS0H8MZDO3WBaPPTdtTgu0="; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "ApiSurface"; |     pname = "ApiSurface"; | ||||||
|     version = "4.0.33"; |     version = "4.0.28"; | ||||||
|     sha256 = "0mmsa5gxfd3bbgacip0c1hljwd958zcx1012qdh033sx6nfz3v36"; |     sha256 = "1gg0dqbgbb8aqn2lxi5gf2wq969kgskby5wph6m2b3hdkz7265ak"; | ||||||
|  |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "coverlet.collector"; | ||||||
|  |     version = "6.0.0"; | ||||||
|  |     sha256 = "12j34vrkmph8lspbafnqmfnj2qvysz1jcrks2khw798s6dwv0j90"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "Fantomas.Core"; |     pname = "Fantomas.Core"; | ||||||
| @@ -116,11 +121,21 @@ | |||||||
|     version = "8.0.0"; |     version = "8.0.0"; | ||||||
|     sha256 = "0055f69q3hbagqp8gl3nk0vfn4qyqyxsxyy7pd0g7wm3z28byzmx"; |     sha256 = "0055f69q3hbagqp8gl3nk0vfn4qyqyxsxyy7pd0g7wm3z28byzmx"; | ||||||
|   }) |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "Microsoft.CodeCoverage"; | ||||||
|  |     version = "17.8.0"; | ||||||
|  |     sha256 = "173wjadp3gan4x2jfjchngnc4ca4mb95h1sbb28jydfkfw0z1zvj"; | ||||||
|  |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "Microsoft.CodeCoverage"; |     pname = "Microsoft.CodeCoverage"; | ||||||
|     version = "17.9.0"; |     version = "17.9.0"; | ||||||
|     sha256 = "1gljgi69k0fz8vy8bn6xlyxabj6q4vls2zza9wz7ng6ix3irm89r"; |     sha256 = "1gljgi69k0fz8vy8bn6xlyxabj6q4vls2zza9wz7ng6ix3irm89r"; | ||||||
|   }) |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "Microsoft.NET.Test.Sdk"; | ||||||
|  |     version = "17.8.0"; | ||||||
|  |     sha256 = "1syvl3g0hbrcgfi9rq6pld8s8hqqww4dflf1lxn59ccddyyx0gmv"; | ||||||
|  |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "Microsoft.NET.Test.Sdk"; |     pname = "Microsoft.NET.Test.Sdk"; | ||||||
|     version = "17.9.0"; |     version = "17.9.0"; | ||||||
| @@ -266,11 +281,21 @@ | |||||||
|     version = "8.0.0"; |     version = "8.0.0"; | ||||||
|     sha256 = "1gdx7n45wwia3yvang3ls92sk3wrymqcx9p349j8wba2lyjf9m44"; |     sha256 = "1gdx7n45wwia3yvang3ls92sk3wrymqcx9p349j8wba2lyjf9m44"; | ||||||
|   }) |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "Microsoft.TestPlatform.ObjectModel"; | ||||||
|  |     version = "17.8.0"; | ||||||
|  |     sha256 = "0b0i7lmkrcfvim8i3l93gwqvkhhhfzd53fqfnygdqvkg6np0cg7m"; | ||||||
|  |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "Microsoft.TestPlatform.ObjectModel"; |     pname = "Microsoft.TestPlatform.ObjectModel"; | ||||||
|     version = "17.9.0"; |     version = "17.9.0"; | ||||||
|     sha256 = "1kgsl9w9fganbm9wvlkqgk0ag9hfi58z88rkfybc6kvg78bx89ca"; |     sha256 = "1kgsl9w9fganbm9wvlkqgk0ag9hfi58z88rkfybc6kvg78bx89ca"; | ||||||
|   }) |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "Microsoft.TestPlatform.TestHost"; | ||||||
|  |     version = "17.8.0"; | ||||||
|  |     sha256 = "0f5jah93kjkvxwmhwb78lw11m9pkkq9fvf135hpymmmpxqbdh97q"; | ||||||
|  |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "Microsoft.TestPlatform.TestHost"; |     pname = "Microsoft.TestPlatform.TestHost"; | ||||||
|     version = "17.9.0"; |     version = "17.9.0"; | ||||||
| @@ -291,6 +316,11 @@ | |||||||
|     version = "3.6.133"; |     version = "3.6.133"; | ||||||
|     sha256 = "1cdw8krvsnx0n34f7fm5hiiy7bs6h3asvncqcikc0g46l50w2j80"; |     sha256 = "1cdw8krvsnx0n34f7fm5hiiy7bs6h3asvncqcikc0g46l50w2j80"; | ||||||
|   }) |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "NETStandard.Library"; | ||||||
|  |     version = "2.0.0"; | ||||||
|  |     sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; | ||||||
|  |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NETStandard.Library"; |     pname = "NETStandard.Library"; | ||||||
|     version = "2.0.3"; |     version = "2.0.3"; | ||||||
| @@ -308,23 +338,28 @@ | |||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Common"; |     pname = "NuGet.Common"; | ||||||
|     version = "6.9.1"; |     version = "6.8.0"; | ||||||
|     sha256 = "0ic3d46r9v05pkczpmskw86yzixm6iwshbw0ya8i2957nhhlymw8"; |     sha256 = "0l3ij8iwy7wj6s7f93lzi9168r4wz8zyin6a08iwgk7hvq44cia1"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Configuration"; |     pname = "NuGet.Configuration"; | ||||||
|     version = "6.9.1"; |     version = "6.8.0"; | ||||||
|     sha256 = "07z4qgbibpg59j2r05ifnqdyqf2xinm33rx7gjyr1f73kzg01m33"; |     sha256 = "0x03p408smkmv1gv7pmvsia4lkn0xaj4wfrkl58pjf8bbv51y0yw"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Frameworks"; |     pname = "NuGet.Frameworks"; | ||||||
|     version = "6.9.1"; |     version = "6.5.0"; | ||||||
|     sha256 = "0s3az3ac53icjnmb14hfjcmkvzscvrkm62jgqf48yvsbysyhqm5s"; |     sha256 = "0s37d1p4md0k6d4cy6sq36f2dgkd9qfbzapxhkvi8awwh0vrynhj"; | ||||||
|  |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "NuGet.Frameworks"; | ||||||
|  |     version = "6.8.0"; | ||||||
|  |     sha256 = "0i2xvhgkjkjr496i3pg8hamwv6505fia45qhn7jg5m01wb3cvsjl"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Packaging"; |     pname = "NuGet.Packaging"; | ||||||
|     version = "6.9.1"; |     version = "6.8.0"; | ||||||
|     sha256 = "0w0arkmzg3qh1brq4vm10zrsjm7nw706ld4y5kqcmvjpd16f4b4y"; |     sha256 = "031z4s905bxi94h3f0qy4j1b6jxdxgqgpkzqvvpfxch07szxcbim"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Protocol"; |     pname = "NuGet.Protocol"; | ||||||
| @@ -333,13 +368,18 @@ | |||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NuGet.Versioning"; |     pname = "NuGet.Versioning"; | ||||||
|     version = "6.9.1"; |     version = "6.8.0"; | ||||||
|     sha256 = "0xrs82dydy9cgxf0qypr01wawwnq1nf6fc7rwisb4y5v4r259fdm"; |     sha256 = "1sd25h46fd12ng780r02q4ijcx1imkb53kj1y2y7cwg5myh537ks"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NUnit"; |     pname = "NUnit"; | ||||||
|     version = "4.1.0"; |     version = "3.13.3"; | ||||||
|     sha256 = "0fj6xwgqaxq3mrai86bklclfmjkzf038mrslwfqf4ignaz9f7g5j"; |     sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6"; | ||||||
|  |   }) | ||||||
|  |   (fetchNuGet { | ||||||
|  |     pname = "NUnit"; | ||||||
|  |     version = "4.0.1"; | ||||||
|  |     sha256 = "0jgiq3dbwli5r70j0bw7021d69r7bhr58s8kphlpjmf7k47l5pcd"; | ||||||
|   }) |   }) | ||||||
|   (fetchNuGet { |   (fetchNuGet { | ||||||
|     pname = "NUnit3TestAdapter"; |     pname = "NUnit3TestAdapter"; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user