Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0e0b4f9

Browse files
committed
Merge branch 'proj1' ofhttps://github.com/dsyme/visualfsharp into dsyme-proj1
2 parentseeac3a5 +8724793 commit0e0b4f9

File tree

15 files changed

+214
-199
lines changed

15 files changed

+214
-199
lines changed

‎VisualFSharp.sln‎

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 15
4-
VisualStudioVersion =15.0.26403.7
4+
VisualStudioVersion =15.0.26730.3
55
MinimumVisualStudioVersion =10.0.40219.1
66
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") ="FSharp.Compiler.Private","src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj","{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}"
77
EndProject
88
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") ="FSharp.VS.FSI","vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj","{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}"
9-
ProjectSection(ProjectDependencies) =postProject
10-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} ={2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
11-
EndProjectSection
9+
ProjectSection(ProjectDependencies) =postProject
10+
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} ={2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
11+
EndProjectSection
1212
EndProject
1313
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") ="FSharp.Compiler.Server.Shared","src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj","{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}"
1414
EndProject
@@ -142,6 +142,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FSharp.Compiler.Service.tes
142142
EndProject
143143
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") ="TestTP","tests\service\data\TestTP\TestTP.fsproj","{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}"
144144
EndProject
145+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") ="ResourceFile","vsintegration\ItemTemplates\ResourceFile\ResourceFile.csproj","{0385564F-07B4-4264-AB8A-17C393E9140C}"
146+
EndProject
145147
Global
146148
GlobalSection(SolutionConfigurationPlatforms) =preSolution
147149
Debug|Any CPU=Debug|Any CPU
@@ -574,6 +576,14 @@ Global
574576
{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|Any CPU.Build.0=Release|Any CPU
575577
{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|x86.ActiveCfg=Release|Any CPU
576578
{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|x86.Build.0=Release|Any CPU
579+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|Any CPU.ActiveCfg=Debug|Any CPU
580+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|Any CPU.Build.0=Debug|Any CPU
581+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|x86.ActiveCfg=Debug|Any CPU
582+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|x86.Build.0=Debug|Any CPU
583+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Release|Any CPU.ActiveCfg=Release|Any CPU
584+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Release|Any CPU.Build.0=Release|Any CPU
585+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Release|x86.ActiveCfg=Release|Any CPU
586+
{0385564F-07B4-4264-AB8A-17C393E9140C}.Release|x86.Build.0=Release|Any CPU
577587
EndGlobalSection
578588
GlobalSection(SolutionProperties) =preSolution
579589
HideSolutionNode =FALSE
@@ -639,5 +649,9 @@ Global
639649
{887630A3-4B1D-40EA-B8B3-2D842E9C40DB} ={35636A82-401A-4C3A-B2AB-EB7DC5E9C268}
640650
{35636A82-401A-4C3A-B2AB-EB7DC5E9C268} ={F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}
641651
{FF76BD3C-5E0A-4752-B6C3-044F6E15719B} ={35636A82-401A-4C3A-B2AB-EB7DC5E9C268}
652+
{0385564F-07B4-4264-AB8A-17C393E9140C} ={F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
653+
EndGlobalSection
654+
GlobalSection(ExtensibilityGlobals) =postSolution
655+
SolutionGuid ={48EDBBBE-C8EE-4E3C-8B19-97184A487B37}
642656
EndGlobalSection
643657
EndGlobal

‎vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs‎

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ type internal FSharpProjectOptionsManager
164164
this.AddOrUpdateProject(projectId,(fun isRefresh->
165165
letextraProjectInfo= Some(box workspace)
166166
lettryGetOptionsForReferencedProject f= f|> tryGetOrCreateProjectId|> Option.bind this.TryGetOptionsForProject
167-
letreferencedProjects,options= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, site.ProjectFileName(), extraProjectInfo, serviceProvider,true)
167+
letreferencedProjects,options= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, site.ProjectFileName, extraProjectInfo, serviceProvider,true)
168168
letreferencedProjectIds= referencedProjects|> Array.choose tryGetOrCreateProjectId
169169
checkerProvider.Checker.InvalidateConfiguration(options, startBackgroundCompileIfAlreadySeen=not isRefresh, userOpName= userOpName+".UpdateProjectInfo")
170170
referencedProjectIds, options))
@@ -231,21 +231,22 @@ type internal FSharpProjectOptionsManager
231231
Some(reporter:> Microsoft.VisualStudio.Shell.Interop.IVsLanguageServiceBuildErrorReporter2)
232232

233233
{new Microsoft.VisualStudio.FSharp.LanguageService.IProjectSitewith
234-
member__.SourceFilesOnDisk()= this.GetProjectInfo(project.FilePath)|> fst
235-
member__.DescriptionOfProject()= project.Name
236-
member__.CompilerFlags()=
234+
member__.CompilationSourceFiles= this.GetProjectInfo(project.FilePath)|> fst
235+
member__.CompilationOptions=
237236
let_,references,options= this.GetProjectInfo(project.FilePath)
238237
Array.concat[options; references|> Array.map(fun r->"-r:"+ r)]
239-
member__.ProjectFileName()= project.FilePath
238+
member__.CompilationReferences= this.GetProjectInfo(project.FilePath)|> thrd
239+
membersite.CompilationBinOutputPath= site.CompilationOptions|> Array.tryPick(fun s->if s.StartsWith("-o:")then Some s.[3..]else None)
240+
member__.Description= project.Name
241+
member__.ProjectFileName= project.FilePath
240242
member__.AdviseProjectSiteChanges(_,_)=()
241243
member__.AdviseProjectSiteCleaned(_,_)=()
242244
member__.AdviseProjectSiteClosed(_,_)=()
243245
member__.IsIncompleteTypeCheckEnvironment=false
244246
member__.TargetFrameworkMoniker=""
245-
member__.ProjectGuid=project.Id.Id.ToString()
247+
member__.ProjectGuid= project.Id.Id.ToString()
246248
member__.LoadTime= System.DateTime.Now
247249
member__.ProjectProvider= Some iProvideProjectSite
248-
member__.AssemblyReferences()= this.GetProjectInfo(project.FilePath)|> thrd
249250
member__.BuildErrorReporterwith get()= errorReporterand
250251
set(v)= errorReporter<- v
251252
}
@@ -459,17 +460,20 @@ type
459460

460461
lettheme= package.ComponentModel.DefaultExportProvider.GetExport<ISetThemeColors>().Value
461462
theme.SetColors()
462-
463-
/// Sync the information for the project
464-
member__.SyncProject(project:AbstractProject,projectContext:IWorkspaceProjectContext,site:IProjectSite,workspace,forceUpdate,userOpName)=
463+
464+
/// Sync the Roslyn information for the project held in 'projectContext' to match the information given by 'site'.
465+
/// Also sync the info in ProjectInfoManager if necessary.
466+
memberthis.SyncProject(project:AbstractProject,projectContext:IWorkspaceProjectContext,site:IProjectSite,workspace,forceUpdate,userOpName)=
465467
letwellFormedFilePathSetIgnoreCase(paths:seq<string>)=
466-
HashSet(paths|> Seq.filter isPathWellFormed|> Seq.map(fun s->try System.IO.Path.GetFullPath(s)with_-> s), StringComparer.OrdinalIgnoreCase)
467-
468-
letupdatedFiles= site.SourceFilesOnDisk()|> wellFormedFilePathSetIgnoreCase
469-
letoriginalFiles= project.GetCurrentDocuments()|> Seq.map(fun file-> file.FilePath)|> wellFormedFilePathSetIgnoreCase
468+
HashSet(paths|> Seq.filter isPathWellFormed|> Seq.map(fun s->try Path.GetFullPath(s)with_-> s), StringComparer.OrdinalIgnoreCase)
470469

471470
let mutableupdated= forceUpdate
472471

472+
// Sync the source files in projectContext. Note that these source files are __not__ maintained in order in projectContext
473+
// as edits are made. It seems this is ok because the source file list is only used to drive roslyn per-file checking.
474+
letupdatedFiles= site.CompilationSourceFiles|> wellFormedFilePathSetIgnoreCase
475+
letoriginalFiles= project.GetCurrentDocuments()|> Seq.map(fun file-> file.FilePath)|> wellFormedFilePathSetIgnoreCase
476+
473477
for filein updatedFilesdo
474478
ifnot(originalFiles.Contains(file))then
475479
projectContext.AddSourceFile(file)
@@ -480,7 +484,7 @@ type
480484
projectContext.RemoveSourceFile(file)
481485
updated<-true
482486

483-
letupdatedRefs= site.AssemblyReferences()|> wellFormedFilePathSetIgnoreCase
487+
letupdatedRefs= site.CompilationReferences|> wellFormedFilePathSetIgnoreCase
484488
letoriginalRefs= project.GetCurrentMetadataReferences()|> Seq.map(fun ref-> ref.FilePath)|> wellFormedFilePathSetIgnoreCase
485489

486490
for refin updatedRefsdo
@@ -493,8 +497,9 @@ type
493497
projectContext.RemoveMetadataReference(ref)
494498
updated<-true
495499

500+
// Update the project options association
496501
letok,originalOptions= optionsAssociation.TryGetValue(projectContext)
497-
letupdatedOptions= site.CompilerFlags()
502+
letupdatedOptions= site.CompilationOptions
498503
ifnot ok|| originalOptions<> updatedOptionsthen
499504

500505
// OK, project options have changed, try to fake out Roslyn to convince it to reparse things.
@@ -520,13 +525,12 @@ type
520525
letuserOpName= userOpName+".SetupProjectFile"
521526
let recsetup(site:IProjectSite)=
522527
letprojectGuid= Guid(site.ProjectGuid)
523-
letprojectFileName= site.ProjectFileName()
528+
letprojectFileName= site.ProjectFileName
524529
letprojectDisplayName= projectDisplayNameOf projectFileName
525530

526531
letprojectId= workspace.ProjectTracker.GetOrCreateProjectIdForPath(projectFileName, projectDisplayName)
527532

528533
if isNull(workspace.ProjectTracker.GetProject projectId)then
529-
projectInfoManager.UpdateProjectInfo(tryGetOrCreateProjectId workspace, projectId, site, userOpName)
530534
letprojectContextFactory= package.ComponentModel.GetService<IWorkspaceProjectContextFactory>();
531535
leterrorReporter= ProjectExternalErrorReporter(projectId,"FS", this.SystemServiceProvider)
532536

@@ -542,27 +546,35 @@ type
542546

543547
letprojectContext=
544548
projectContextFactory.CreateProjectContext(
545-
FSharpConstants.FSharpLanguageName, projectDisplayName, projectFileName, projectGuid, hierarchy,null, errorReporter)
549+
FSharpConstants.FSharpLanguageName,
550+
projectDisplayName,
551+
projectFileName,
552+
projectGuid,
553+
hierarchy,
554+
Option.toObj site.CompilationBinOutputPath,
555+
errorReporter)
546556

547557
letproject= projectContext:?> AbstractProject
548558

549-
this.SyncProject(project, projectContext, site, workspace, forceUpdate=false, userOpName=userOpName)
559+
// Sync IProjectSite --> projectContext, and IProjectSite --> ProjectInfoManage
560+
this.SyncProject(project, projectContext, site, workspace, forceUpdate=true, userOpName=userOpName)
550561

551562
site.BuildErrorReporter<- Some(errorReporter:> Microsoft.VisualStudio.Shell.Interop.IVsLanguageServiceBuildErrorReporter2)
552563

564+
// TODO: consider forceUpdate = false here. forceUpdate=true may be causing repeated computation?
553565
site.AdviseProjectSiteChanges(FSharpConstants.FSharpLanguageServiceCallbackName,
554566
AdviseProjectSiteChanges(fun()-> this.SyncProject(project, projectContext, site, workspace, forceUpdate=true, userOpName="AdviseProjectSiteChanges."+userOpName)))
567+
555568
site.AdviseProjectSiteClosed(FSharpConstants.FSharpLanguageServiceCallbackName,
556569
AdviseProjectSiteChanges(fun()->
557570
projectInfoManager.ClearInfoForProject(project.Id)
558571
optionsAssociation.Remove(projectContext)|> ignore
559572
project.Disconnect()))
573+
560574
for referencedSitein ProjectSitesAndFiles.GetReferencedProjectSites(site, this.SystemServiceProvider)do
561-
letreferencedProjectId= setup referencedSite
562-
project.AddProjectReference(ProjectReference referencedProjectId)
575+
setup referencedSite
563576

564-
projectId
565-
setup(siteProvider.GetProjectSite())|> ignore
577+
setup(siteProvider.GetProjectSite())
566578

567579
memberthis.SetupStandAloneFile(fileName:string,fileContents:string,workspace:VisualStudioWorkspaceImpl,hier:IVsHierarchy)=
568580
letloadTime= DateTime.Now

‎vsintegration/src/FSharp.LanguageService/BackgroundRequests.fs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ type internal FSharpLanguageServiceBackgroundRequests_DEPRECATED
101101
letprojectSite= ProjectSitesAndFiles.CreateProjectSiteForScript(fileName, referencedProjectFileNames, checkOptions)
102102
{ ProjectSite= projectSite
103103
CheckOptions= checkOptions
104-
ProjectFileName= projectSite.ProjectFileName()
104+
ProjectFileName= projectSite.ProjectFileName
105105
FSharpChecker= checker
106106
Colorizer=lazy getColorizer(view)}
107107
Some data
@@ -111,7 +111,7 @@ type internal FSharpLanguageServiceBackgroundRequests_DEPRECATED
111111
letprojectSite= getProjectSitesAndFiles().FindOwningProject_DEPRECATED(rdt,fileName)
112112
letenableInMemoryCrossProjectReferences=true
113113
let_,checkOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences,(fun _-> None), projectSite, fileName, None, getServiceProvider(),false)
114-
letprojectFileName= projectSite.ProjectFileName()
114+
letprojectFileName= projectSite.ProjectFileName
115115
letdata=
116116
{ ProjectSite= projectSite
117117
CheckOptions= checkOptions

‎vsintegration/src/FSharp.LanguageService/FSharpSource.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ type internal FSharpSource_DEPRECATED(service:LanguageService_DEPRECATED, textLi
350350
[|
351351
match iSource.ProjectSitewith
352352
| Some pi->
353-
yield! pi.CompilerFlags()|> Array.filter(fun flag-> flag.StartsWith("--define:"))
353+
yield! pi.CompilationOptions|> Array.filter(fun flag-> flag.StartsWith("--define:"))
354354
| None->()
355355
yield"--noframework"
356356

‎vsintegration/src/FSharp.LanguageService/IProjectSite.fs‎

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,32 @@ type internal IProvideProjectSite =
1717
andinternalIProjectSite=
1818

1919
/// List of files in the project. In the correct order.
20-
abstractSourceFilesOnDisk :unit->string[]
20+
abstractCompilationSourceFiles :string[]
2121

22-
/// Flags that the compiler would need to understand how to compile.
23-
abstractCompilerFlags :unit->string[]
22+
/// Flags that the compiler would need to understand how to compile. Includes '-r'
23+
/// options but not source files
24+
abstractCompilationOptions :string[]
25+
26+
/// The normalized '-r:' assembly references, without the '-r:'
27+
abstractCompilationReferences :string[]
28+
29+
/// The '-o:' output bin path, without the '-o:'
30+
abstractCompilationBinOutputPath :stringoption
2431

2532
/// Register for notifications for when the above change
26-
abstractAdviseProjectSiteChanges :(*callbackOwnerKey*)string*AdviseProjectSiteChanges->unit
33+
abstractAdviseProjectSiteChanges : callbackOwnerKey:string*AdviseProjectSiteChanges->unit
2734

2835
/// Register for notifications when project is cleaned/rebuilt (and thus any live TypeProviders should be refreshed)
29-
abstractAdviseProjectSiteCleaned :(*callbackOwnerKey*)string*AdviseProjectSiteChanges->unit
36+
abstractAdviseProjectSiteCleaned : callbackOwnerKey:string*AdviseProjectSiteChanges->unit
3037

3138
// Register for notifications when project is closed.
32-
abstractAdviseProjectSiteClosed :(*callbackOwnerKey*)string*AdviseProjectSiteChanges->unit
39+
abstractAdviseProjectSiteClosed : callbackOwnerKey:string*AdviseProjectSiteChanges->unit
3340

3441
/// A user-friendly description of the project. Used only for developer/DEBUG tooltips and such.
35-
abstractDescriptionOfProject :unit->string
42+
abstractDescription :string
3643

3744
/// The name of the project file.
38-
abstractProjectFileName :unit->string
45+
abstractProjectFileName :string
3946

4047
/// The error list task reporter
4148
abstractBuildErrorReporter :Microsoft.VisualStudio.Shell.Interop.IVsLanguageServiceBuildErrorReporter2optionwith get, set
@@ -55,4 +62,4 @@ and internal IProjectSite =
5562

5663
abstractProjectProvider :IProvideProjectSiteoption
5764

58-
abstractAssemblyReferences :unit->string[]
65+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp