Skip to content

Commit 137acef

Browse files
committed
Merge pull request #86 from rneatherway/fcs-2.0.0
Update to FCS 2.0.0.0-beta (new project cracking)
2 parents 2ba128e + 0114183 commit 137acef

File tree

29 files changed

+203
-142
lines changed

29 files changed

+203
-142
lines changed

FsAutoComplete.Core/CommandResponse.fs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ module CommandResponse =
7474
Files: List<string>
7575
Output: string
7676
References: List<string>
77+
Logs: Map<string, string>
7778
}
7879

7980
type OverloadSignature =
@@ -202,12 +203,13 @@ module CommandResponse =
202203
let data = TipFormatter.formatTip tip |> List.map(List.map(fun (n,m) -> {Signature = n; Comment = m} ))
203204
serialize { Kind = "helptext"; Data = { HelpTextResponse.Name = name; Overloads = data } }
204205

205-
let project (serialize : obj -> string) (projectFileName, projectFiles, outFileOpt, references) =
206+
let project (serialize : obj -> string) (projectFileName, projectFiles, outFileOpt, references, logMap) =
206207
let projectData =
207208
{ Project = projectFileName
208209
Files = projectFiles
209210
Output = match outFileOpt with Some x -> x | None -> "null"
210-
References = List.sortBy IO.Path.GetFileName references }
211+
References = List.sortBy IO.Path.GetFileName references
212+
Logs = logMap }
211213
serialize { Kind = "project"; Data = projectData }
212214

213215
let completion (serialize : obj -> string) (decls: FSharpDeclarationListItem[]) =

FsAutoComplete.Core/CompilerServiceInterface.fs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,19 @@ type FSharpCompilerServiceChecker() =
139139
|> Async.RunSynchronously
140140
parseResult.GetNavigationItems().Declarations
141141

142-
member x.TryGetProjectOptions (file: string) : Result<_> =
142+
member x.TryGetProjectOptions (file: string, verbose: bool) : Result<_> =
143143
if not (File.Exists file) then
144144
Failure (sprintf "File '%s' does not exist" file)
145145
else
146146
try
147-
let po =
148-
let p = checker.GetProjectOptionsFromProjectFile(file)
147+
let po, logMap =
148+
let p, logMap = ProjectCracker.GetProjectOptionsFromProjectFileLogged(file, enableLogging=verbose)
149149
let opts =
150150
if not (Seq.exists (fun (s: string) -> s.Contains "FSharp.Core.dll") p.OtherOptions) then
151151
ensureCorrectFSharpCore p.OtherOptions
152152
else
153153
p.OtherOptions
154-
{ p with OtherOptions = opts }
154+
{ p with OtherOptions = opts }, logMap
155155

156156
let chooseByPrefix prefix (s: string) =
157157
if s.StartsWith(prefix) then Some (s.Substring(prefix.Length))
@@ -161,20 +161,6 @@ type FSharpCompilerServiceChecker() =
161161
let outputFile = Seq.tryPick (chooseByPrefix "--out:") po.OtherOptions
162162
let references = Seq.choose (chooseByPrefix "-r:") po.OtherOptions
163163

164-
Success (po, Seq.toList compileFiles, outputFile, Seq.toList references)
164+
Success (po, Seq.toList compileFiles, outputFile, Seq.toList references, logMap)
165165
with e ->
166166
Failure e.Message
167-
168-
open System.Reflection
169-
module CompilerServiceInterface =
170-
let addMSBuildv14BackupResolution () =
171-
let onResolveEvent = new ResolveEventHandler( fun sender evArgs ->
172-
let requestedAssembly = AssemblyName(evArgs.Name)
173-
if requestedAssembly.Name.StartsWith("Microsoft.Build") &&
174-
not (requestedAssembly.Name.EndsWith(".resources")) then
175-
requestedAssembly.Version <- Version("14.0.0.0")
176-
Assembly.Load (requestedAssembly)
177-
else
178-
null
179-
)
180-
AppDomain.CurrentDomain.add_AssemblyResolve(onResolveEvent)

FsAutoComplete.Core/FsAutoComplete.Core.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module Commands =
3838

3939

4040

41-
let project (serialize : obj -> string) (state : State) (checker : FSharpCompilerServiceChecker) file time = async {
41+
let project (serialize : obj -> string) (state : State) (checker : FSharpCompilerServiceChecker) file time verbose = async {
4242
let file = Path.GetFullPath file
4343

4444
// The FileSystemWatcher often triggers multiple times for
@@ -49,10 +49,10 @@ module Commands =
4949
| Some oldtime when time - oldtime < TimeSpan.FromSeconds(1.0) -> [],state
5050
| _ ->
5151

52-
match checker.TryGetProjectOptions(file) with
52+
match checker.TryGetProjectOptions(file, verbose) with
5353
| Result.Failure s -> [Response.error serialize s],state
54-
| Result.Success(po, projectFiles, outFileOpt, references) ->
55-
let res = Response.project serialize (file, projectFiles, outFileOpt, references)
54+
| Result.Success(po, projectFiles, outFileOpt, references, logMap) ->
55+
let res = Response.project serialize (file, projectFiles, outFileOpt, references, logMap)
5656
let checkOptions =
5757
projectFiles
5858
|> List.fold (fun s f -> Map.add f po s) state.FileCheckOptions

FsAutoComplete.Core/FsAutoComplete.Core.fsproj

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,16 @@
7777
<Reference Include="System.Numerics" />
7878
</ItemGroup>
7979
<Choose>
80-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6')">
80+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0')">
81+
<ItemGroup>
82+
<Reference Include="FSharp.Compiler.Service">
83+
<HintPath>..\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.dll</HintPath>
84+
<Private>True</Private>
85+
<Paket>True</Paket>
86+
</Reference>
87+
</ItemGroup>
88+
</When>
89+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1')">
8190
<ItemGroup>
8291
<Reference Include="FSharp.Compiler.Service">
8392
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll</HintPath>
@@ -87,6 +96,22 @@
8796
</ItemGroup>
8897
</When>
8998
</Choose>
99+
<Choose>
100+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1')">
101+
<ItemGroup>
102+
<Reference Include="FSharp.Compiler.Service.ProjectCracker">
103+
<HintPath>..\packages\FSharp.Compiler.Service.ProjectCracker\lib\net45\FSharp.Compiler.Service.ProjectCracker.dll</HintPath>
104+
<Private>True</Private>
105+
<Paket>True</Paket>
106+
</Reference>
107+
<Reference Include="FSharp.Compiler.Service.ProjectCrackerTool">
108+
<HintPath>..\packages\FSharp.Compiler.Service.ProjectCracker\lib\net45\FSharp.Compiler.Service.ProjectCrackerTool.exe</HintPath>
109+
<Private>True</Private>
110+
<Paket>True</Paket>
111+
</Reference>
112+
</ItemGroup>
113+
</When>
114+
</Choose>
90115
<ItemGroup>
91116
<Reference Include="FParsec">
92117
<HintPath>..\packages\FSharpLint.Core\lib\FParsec.dll</HintPath>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
FSharp.Compiler.Service
2+
FSharp.Compiler.Service.ProjectCracker
23
FSharpLint.Core

FsAutoComplete.Suave/App.config

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<configuration>
3-
<startup>
4-
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5-
</startup>
6-
<runtime>
7-
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8-
<dependentAssembly>
9-
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
10-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
11-
</dependentAssembly>
12-
<dependentAssembly>
13-
<assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
14-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
15-
</dependentAssembly>
16-
<dependentAssembly>
17-
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
18-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.3.1.0" />
19-
</dependentAssembly>
20-
<dependentAssembly>
21-
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
22-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="7.0.0.0" />
23-
</dependentAssembly>
24-
<dependentAssembly>
25-
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
26-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="2.6.4.14350" />
27-
</dependentAssembly>
28-
</assemblyBinding>
29-
</runtime>
30-
</configuration>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<startup>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5+
</startup>
6+
<runtime>
7+
8+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
9+
<dependentAssembly>
10+
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
11+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.3.1.0" />
12+
</dependentAssembly>
13+
<dependentAssembly>
14+
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
15+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="7.0.0.0" />
16+
</dependentAssembly>
17+
<dependentAssembly>
18+
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
19+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="2.6.4.14350" />
20+
</dependentAssembly>
21+
</assemblyBinding></runtime>
22+
</configuration>

FsAutoComplete.Suave/FsAutoComplete.Suave.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ let main argv =
7777
choose [
7878
path "/parse" >>= handler (fun (data : ParseRequest) -> Commands.parse writeJson !state checker data.FileName data.Lines)
7979
//TODO: Add filewatcher
80-
path "/project" >>= handler (fun (data : ProjectRequest) -> Commands.project writeJson !state checker data.FileName DateTime.Now)
80+
path "/project" >>= handler (fun (data : ProjectRequest) -> Commands.project writeJson !state checker data.FileName DateTime.Now false)
8181
path "/declarations" >>= handler (fun (data : DeclarationsRequest) -> Commands.declarations writeJson !state checker data.FileName)
8282
path "/helptext" >>= handler (fun (data : HelptextRequest) -> Commands.helptext writeJson !state checker data.Symbol)
8383
path "/completion" >>= positionHandler (fun data tyRes lineStr _ -> Commands.completion writeJson !state checker tyRes data.Line data.Column lineStr None (Some data.Filter) )

FsAutoComplete.Suave/FsAutoComplete.Suave.fsproj

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,16 @@
8282
</Target>
8383
-->
8484
<Choose>
85-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6')">
85+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0')">
86+
<ItemGroup>
87+
<Reference Include="FSharp.Compiler.Service">
88+
<HintPath>..\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.dll</HintPath>
89+
<Private>True</Private>
90+
<Paket>True</Paket>
91+
</Reference>
92+
</ItemGroup>
93+
</When>
94+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1')">
8695
<ItemGroup>
8796
<Reference Include="FSharp.Compiler.Service">
8897
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll</HintPath>
@@ -120,7 +129,7 @@
120129
</Reference>
121130
</ItemGroup>
122131
</When>
123-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6')">
132+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1')">
124133
<ItemGroup>
125134
<Reference Include="Newtonsoft.Json">
126135
<HintPath>..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -149,7 +158,7 @@
149158
</When>
150159
</Choose>
151160
<Choose>
152-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6')">
161+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1')">
153162
<ItemGroup>
154163
<Reference Include="Suave">
155164
<HintPath>..\packages\Suave\lib\net40\Suave.dll</HintPath>
@@ -159,4 +168,8 @@
159168
</ItemGroup>
160169
</When>
161170
</Choose>
171+
<Target Name="AfterBuild">
172+
<Copy SourceFiles="..\packages\FSharp.Compiler.Service.ProjectCracker\lib\net45\FSharp.Compiler.Service.ProjectCrackerTool.exe" DestinationFolder="$(OutputPath)" />
173+
<Copy SourceFiles="..\packages\FSharp.Compiler.Service.ProjectCracker\lib\net45\FSharp.Compiler.Service.ProjectCrackerTool.exe.config" DestinationFolder="$(OutputPath)" />
174+
</Target>
162175
</Project>

FsAutoComplete.Tests/App.config

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<configuration>
3-
<startup>
4-
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5-
</startup>
6-
<runtime>
7-
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8-
<dependentAssembly>
9-
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
10-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
11-
</dependentAssembly>
12-
<dependentAssembly>
13-
<assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
14-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
15-
</dependentAssembly>
16-
<dependentAssembly>
17-
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
18-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.3.1.0" />
19-
</dependentAssembly>
20-
<dependentAssembly>
21-
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
22-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="7.0.0.0" />
23-
</dependentAssembly>
24-
<dependentAssembly>
25-
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
26-
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="2.6.4.14350" />
27-
</dependentAssembly>
28-
</assemblyBinding>
29-
</runtime>
30-
</configuration>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<startup>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5+
</startup>
6+
<runtime>
7+
8+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
9+
<dependentAssembly>
10+
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
11+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.3.1.0" />
12+
</dependentAssembly>
13+
<dependentAssembly>
14+
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
15+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="7.0.0.0" />
16+
</dependentAssembly>
17+
<dependentAssembly>
18+
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
19+
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="2.6.4.14350" />
20+
</dependentAssembly>
21+
</assemblyBinding></runtime>
22+
</configuration>

FsAutoComplete/App.config

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,8 @@
33
<startup>
44
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
55
</startup>
6-
<runtime>
7-
8-
9-
10-
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
11-
<dependentAssembly>
12-
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
13-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
14-
</dependentAssembly>
15-
<dependentAssembly>
16-
<assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
17-
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
18-
</dependentAssembly>
6+
<runtime>
7+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
198
<dependentAssembly>
209
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
2110
<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.3.1.0" />

0 commit comments

Comments
 (0)