-
Notifications
You must be signed in to change notification settings - Fork 786
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
15.3 preview 3: FCS does not respect file ordering defined in .NET Core project files #3260
Comments
Same here |
I checked it on both .NET Core 1.0.4 and .NET Core 2.0 preview 2: the same behavior. |
Absolutely no surprise. Nobody on the Roslyn project team side seemed to care that we didn't have file ordering. |
Also I'm pretty sure all of the issues you've raised for 15.3 should be raised in https://github.com/dotnet/project-system, not here. The code doesn't even live in this repo. |
@saul it is a surprise. UI treeview is a thing (minor priority for now, and moved to later, not for sure in 15.3 dotnet/project-system#1875 (comment)). |
@vasily-kirichenko Roslyn (https://github.com/dotnet/roslyn) <> Roslyn project system (https://github.com/dotnet/roslyn-project-system). |
@srivatsn Any idea where this comes from?
Is this the remaining issues with the argument parser? |
@Pilchie Do you think this is related to your comment here? #3266 (comment) |
@cartermp - no that should be a VS editor thing only. Wouldn't effect build or the solution explorer. BTW @enricosada and @vasily-kirichenko |
Ya the file order in the tree doesn't affect the language service. The project system grabs the command line arguments as they are sent to the compiler (which is correct as evidenced by the build succeeding) and sends that to the language service. Something's going wrong in the language service. |
probably is the same language service bug, as reported in #3266 (comment) @srivatsn @Pilchie @KevinRansom there is a log setting to enable/sethigher to confirm is a dupe? to see args passed to language service is enough. |
I just looked at the F# LS code and it seems to be getting all source files\references etc from an IProjectSite from a IProjectSite (which is the interface that the old F# PS implements) instead of getting them from the Roslyn workspaces which would get populated with all this information. I think this needs to be changed to pull from the workspace for CPS-based projects. |
@srivatsn and I chatted, and we think the easiest way to do this might be to create an implementation of @brettfo Is working on getting the latest F# bits inserted for Preview 4, but can start working on this in parallel I think. |
I was wondering about the For completeness, some other options are relevant to on-the-fly type checking, notably these (after searching through
Of these the output assembly name and the warnings are by far the most important |
@srivatsn @Pilchie as a note, why instead of parse back all the fsc arguments, the language service dont just read the FscCommandLineArgs msbuild items? is already the array splitted with fsc args.. works really well for FSAC in vscode/vim/emacs project parser. So we dont care anymore about msbuild -> fsc task -> parse back somehow and maintain alignment There is no way for new |
That msbuild item itself is not available at this layer, however that string (the entire command line) get passed to this method - right now, that method no-ops for F# since there's no CommandLineParser. However, we can implement a type that gets that and implements IProjectSite too.. |
@srivatsn awesome, afaik (/cc @dsyme @KevinRansom), the F# compiler arguments api is the same of c#, so the
the rest is pattern match on args.. but is not already implemented in dotnet/project-system#2206 by @brettfo as |
CommonCommandLineArguments.OutputFileName?
CommonCommandLineArguments.Encoding
CompilationOptions. CompilationOptions.Features ?
CompilationOptions. CompilationOptions.SpecificDiagnosticOptions |
The parser in the project system is basically just enough to understand what's a reference and source file versus what's not. This is so that it can track changes to references and source files individually and incrementally update the language service. If any of the options change, since that's rarer, it simply tells the LS to recreate a compilation. Ideally the Project system wouldn't ever parse and understand the command line and keep it as mostly a passthrough. That type cannot implement IProjectSite as it's not exposed to the LS in anyway. The contract with the language service is IWorkspaceProjectContext The reason we want to make sure files\references are added to the workspace and not just parsed into a IProjectSite in the SetOptions call is so that any Roslyn extension that works at the workspace level on documents will also work for F# - If we make everything in terms of IProjectSite then they'll have to know about IProjectSite as well. |
thx for info @srivatsn , really appreciated |
This is addressed by: #3564 |
Code completion, tooltips, etc. don't work either.
The text was updated successfully, but these errors were encountered: