Skip to content
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

merge from master #13

Merged
merged 85 commits into from Nov 27, 2016
Merged

merge from master #13

merged 85 commits into from Nov 27, 2016

Conversation

AviAvni
Copy link
Owner

@AviAvni AviAvni commented Nov 27, 2016

No description provided.

KevinRansom and others added 30 commits November 9, 2016 13:21
* Simplify Nugets

* Re-remove ValidateConfiguration

* Re-remove ValidateConfiguration

* fsianycpu.config was inadvertently deleted

* FSC.proj merge issue

* fsharp.core.proj

* Remove prerequisited from vsixmanifest
This fixes #1728 and makes sure we are checking the error code.

This PR also removes the  exclude  option from build.cmd which was causing batch file hell (because of the use of a  !  character!), which was only used to exclude Expensive tests. Now use an explicit  include Expensive .
* Simplify Nugets

* Re-remove ValidateConfiguration

* Re-remove ValidateConfiguration

* fsianycpu.config was inadvertently deleted

* FSC.proj merge issue

* fsharp.core.proj

* Remove prerequisited from vsixmanifest

* Use publish for fsharp.core.unittests

* remove tuplesample.dlls

* Fix tuplesample reference

* correct profile for fsharp.core.unittests

* typo

* Remove pre-requisites again

* Put readme in artifacts directory to ensure it exists
KevinRansom and others added 29 commits November 21, 2016 18:38
* Make async test less flakey.

See #1755. Instead of a ref cell with a lock, we use a ManualResetEvent
so that the sleep 100ms - which I assume is the reason for the
flakiness, this is not proven - can be replaced with a generous timeout,
while the test can still complete in reasonable time.

* Make sure cancel handler is registered.
* fix 1775

* Fix 1749

* adjustment to fix

* fix test
The compiler has some logic to search for known types amongst available DLLs.

With this PR we get to enable several tests that uses F# Interactive on .NET Core and more tests for the F# compiler on .NET Core

Some of the known-type-search logic is OK, but swathes of it are not so good, e.g. this stuff

This improves the search by

just having one function to do the search

moving many "known types" out of Abstract IL (ILGlobals) and into the F# Compiler TcGlobals. THe advantages of this is that getting started with ILGlobals is much simpler if the set of referenced types is simpler - in particular if the small set of types known to Abstract IL are all always in the primary assembly (Int32, String, Array etc.).

This is particularly important for .NET Core. I don't trust the current code to correctly find some of the more obscure types for .NET Core, since the searching was based around various assumptions for Profile 7, 78, 259.

Overall this removes a fair chunk of fragile code from the compiler.

Separately this refactors TcGlobals to be a class instead of a record (which requires fewer lines of code)
* Fix 1805,1807

* fix assert in goto-definition
…#1819)

Fixes underlying issues associated with #1815

After getting a 15+ second UI block in VS 2017, I've done a complete review of the way the new LanguageService implementation is using FSharp.Compiler.Service (the DLL internally called FSharp.Compiler.LanguageService in the Visual F# Tools repo, but it's basically the same component as FCS)

In short, the new LS implementation expects FCS to honour cancellation of submitted tasks in a more timely way.  This PR greatly improves the cancellability of FCS requests, which was one of the underlying causes of such a long UI block.

1. Improve FCS so that it respects cancellation in a more timely way.  Cancellation will now be respected at each step of the evaluation of the incremental build graph (IncrementalBuild.fs). This represents a fundamental improvement to FCS which will be very useful to other F# editors as well, as long as they are cancelling tasks.

   In particular, some FCS requests could be _very_ long running, e.g. CheckFileInProject may require checking **all** the files prior to this file (and if cross-F#-to-F#-project checking is enabled then it will  require checking all the dependent projects too).  

   Prior to this PR FCS was not respecting cancellation of these requests, and was simply running them through and then throwing the results away.

2. The new LS implementation was using some unnecessary calls to Async.RunSynchronously.  All of these could inject arbitrary non-responsiveness into some part of the causality chains.  I've removed these in favour of fully async code.

3. In FCS the old IsResultObsolete logic can be removed in favour of checking a cancellation token

This also fixes #1756, see [this change here](https://github.com/Microsoft/visualfsharp/pull/1819/files#diff-69fa840cd1c6d144d0cd489cad82e901R88)

We have a separate issue that too may errors/warnings are shown for out-of-project files - the old LS implementation showed the first 3 errors - a good choice which we decided on long ago.  I'll add an issue for that.
…le (#1512)

* Reproduce #1253

* Union resolution should not stop other searches

* reproduce #1294

* fix #1294

* Show that constructor syntax still works

* Fix shortcut

* Fix shortcut

* Adding further tests

* Search for a discriminated union without RequireQualifiedAccess attribute

* Don't run union search twice

* Simplify code

* Fix encoding  issue
* try to reproduce #1644

* Fix #1644
Fixes #1821

Incremental colorization was not being effective on changing files for a number of reasons
•Data cache was keyed by source text rather than document ID
•We were writing None entries right through to end-of-file even when we could stop earlier
•We weren't checking that start-of-line indexes and lex states were still the same when reusing entries
•Tokenizers getting recreated for each line - we can cache these as well.

I've tried the PR out on large files and it works much more efficiently.

Also a fix to make  ShouldTriggerCompletionAux  faster in the common case where not pressing  . 

This also fixes glyphs: #1806. Public/private/protected is not yet propagated to the glyph but this gives us feature parity with VS2015
Fix type providers on VS2017 RC.
* Repro case for #1548

* Fixes suggestions in #1548
* Add type info to error - references #1574

* Add type info to FS0314

* Add type info to more SignatureConformance errors
* fix goto defn on operators and other items

* fix gtd
As a result of struggling with running and adding to the compiler tests recently, hopefully this will make things clearer for future contributors.

* FSharpSuite are NUnit tests now.
* Move RunAll.pl specific test.lst stuff to FSharpQA paragraph.
* Add example of using build.cmd to run subset of FSharpQA tests.
* partially fixes Intellisense after type constraint error

* working with intellisense

* fix tests

* exits on too many errors, remove some of the expected error messages
* Implement FSharpQuickInfoProvider (by @OmarTawfik)

* extract tryClassifyAtPosition and reuse it in QuickInfoProvider

* address code review

* fix QuickInfo text span

* don't show empty tooltip

* add a QuickInfoProvider test

* QuickInfoProvider respects current theme colors

* revert problem stuff into FSharp.Compiler.fsproj
@AviAvni AviAvni merged commit c802cca into AviAvni:master Nov 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
9 participants