Граф коммитов

15547 Коммитов

Автор SHA1 Сообщение Дата
David Wengier 8bddfe9971
Skip flaky test (#10821) 2024-09-03 06:01:01 +10:00
dotnet-maestro[bot] 4a9669226e Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240828.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24421.1 -> To Version 10.0.0-alpha.1.24428.1
2024-09-02 12:51:26 +00:00
David Wengier 55c51a3a9d
Apply suggestions from code review 2024-09-02 15:34:32 +10:00
David Wengier a336b7fe2b Create basic tests
These don't test the full capabilities of the formatting engine, just that it runs in cohosting
2024-09-02 15:06:09 +10:00
David Wengier 6c3b12be1e Turn off the old endpoints 2024-09-02 15:05:36 +10:00
David Wengier 2cbbdf5690 Create cohosting endpoints 2024-09-02 15:05:10 +10:00
David Wengier 90c7b476a5 Move WebTools calling code to a shared layer 2024-09-02 15:04:49 +10:00
David Wengier 2a266248b3 Fix a bug from a previous PR 2024-09-02 15:03:10 +10:00
David Wengier 3da875b6fe Create remote formatting service that delegates to the Razor formatting service 2024-09-02 15:02:42 +10:00
David Wengier cb0ae1321e Move trigger characters and logic to the formatting service
So it can be shared
2024-09-02 15:01:37 +10:00
David Wengier 18c310725a
Skip flaky test 2024-09-02 08:15:44 +10:00
David Barbet f01a5a8f30
Update PublishData after VS snap (#10817)
### Summary of the changes

-

Fixes:
2024-08-30 16:45:31 -07:00
David Barbet 3ca44979cc
Update PublishData.json 2024-08-30 15:34:59 -07:00
David Barbet 4d4e9ab735
Update PublishData after VS snap 2024-08-30 15:19:30 -07:00
David Wengier a657d5cf79
Bump WebTools and remove legacy CLaSP package (#10815)
Fixes https://github.com/dotnet/razor/issues/10160
2024-08-31 08:18:23 +10:00
David Wengier 8dc0e5a518 Bump WebTools and remove legacy CLaSP package 2024-08-30 14:55:54 +10:00
David Wengier 21c7674ac4
Re-architect formatting to prepare for cohosting (and for fun!) (#10778)
I nerd sniped myself thinking about how to get formatting into
cohosting, given the limitations Alex ran into doing the relayering for
auto insert, and this is the result. I was going to go further and port
the actual formatting endpoint to cohosting, but that would have ran
into the same issue that Alex did with auto insert, so I figured I'd
wait for that to merge, and put this up in the meantime.

This unblocks the formatting, code action and completion end points from
being ported.
Part of https://github.com/dotnet/razor/issues/10743
Part of https://github.com/dotnet/razor/issues/9519

I **strongly** recommend reviewing commit-at-a-time, as I did this
deliberately in an order, and in order to (hopefully) make reviewing
easier. Though granted, there are a lot of commits.
2024-08-30 10:33:50 +10:00
David Wengier ee83a6b9bb Fixes after merge 2024-08-30 07:38:43 +10:00
David Wengier d0e2a57b29 Merge remote-tracking branch 'upstream/main' into FormattingLayering
# Conflicts:
#	src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/LanguageServer/RazorCSharpFormattingBenchmark.cs
#	src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/AutoInsert/OnAutoInsertEndpoint.cs
#	src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/HtmlFormatter.cs
#	src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/InlineCompletion/InlineCompletionEndPoint.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/IRazorFormattingService.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpFormattingPass.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/FormattingContentValidationPass.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/FormattingDiagnosticValidationPass.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/HtmlFormattingPassBase.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteCSharpOnTypeFormattingPass.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteRazorFormattingPass.cs
#	src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/RazorOnAutoInsertProviderTestBase.cs
#	src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs
#	src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingLanguageServerTestBase.cs
#	src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingTestBase.cs
#	src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestRazorFormattingService.cs
2024-08-30 06:56:47 +10:00
David Wengier e1f6fbaad7
Fix setting breakpoints with self versioned documents (#10811)
Fixes an issue found in app building. Thanks @phil-allen-msft!

Also fixes https://github.com/dotnet/razor/issues/9161

To make reviewing easier:
* First commit is entirely mechanical cleanup, renames, etc. and can be
skipped.
* Second commit is the fix.
* Third commit is tests.
* Fourth commit is updating more tests because these days when you ask
VS to build things it doesn't build all of it and I need to get into the
habit of doing a command line build before pushing

Because of the type and file renames, looking at the PR as a whole is
inadvised.
2024-08-30 06:33:07 +10:00
Alex Gavrilov 12f5194184
Cohosting OnAutoInsert endpoint (#10776)
* Factoring out AutoInsertService

* Switch non-cohost endpoint to use new AutoInsertService

* Adding Remote and OOB AutoInsertService classes and OnAutoInsertProviders

* Add common code for capabilities

* Add cohost OnAutoInsert endpoint

* Parameter rename

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/InsertTextEdit.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Fixup after rebase

* More post-build cleanup

* Move common HTML and C# auto-insert trigger chars per CR suggestion

* More cleanup after rebase

* Add IOnAutoInsertTiggerCharacterProvider per CR suggestion

* Removing trigger characters property from RemoteAutoInsertService per CR suggestion

* Switch to using RemoteResponse

* Fixup bad resolve after rebase, and extra whitespace in RazorLangaugeServer

* Complete capabilities check in CohostingOnAutoInsertEndpoing registration

* Change input position type to serializable :LinePosition

* Fixing RemoteInsertTextEdit to use properly annotated (for serialization) types only

* Support for delegating auto-insert to C#

* Fixup after rebase

* Fixup AutoClosingTagOnAutoInsertProviderTest tests

* Fixinfg up CloseTextTagOnAutoInsertProviderTest tests

* Fixing up OnAutoInsertEndpointTest (which also tests the new AutoInsertService)

* Fixing duplicate OnAutoInsert handler registration (bad merge after rebate)

* Fixes to MEF composition issue and capabilities check
- IDocumentMappingService was not needed (and not available via MEF), so removed that
- TextDocument does not implmement VSInternalTextDocumentClientCapabilities

* Fixing incorrect export type

* Minor cleanup per CR suggestions

* Switching parameters to RazorCodeDocument and removing async in a lot of places per CR suggestion

* Fixing build - removing unneeded using

* Fix RemoteAutoInsertService logic to follow existing code (always prefer our own AutoInsertService first)

* Check allowed trigger characters before delegating to other languages/servers

* Plumbing through actual option values we need and using them

* Fixup After Rebase

* Consuming RazorFormattingService in remote OnAutoInsert service

* Fixing exception in RemoteProjectSnapshot.Configuration

Moving GetFormatterCodeDocumentAsync() into IDocumentSnapshot (and implementations of that) to allow eaiser differentiation of behavior in remote (cohosting) case where we don't need to check the flag on Project.Configuration.

Also AddUsingStatementsIfNeeded *always* gets called, even in cases when they are not actually needed, so we can't Debug.Fail there.

* Switch to PreferHtmlInAttributeValuesDocumentPositionInfoStrategy as the original code does

That allows the code insert double-quotes by delegating to HTML language server after attribute name and equals.

* Cleanup usings

* More usings cleanup

* PR feedback - minor cleanup and removal of InsertTextEdit type in favor of VSInternalDocumentOnAutoInsertResponseItem

* PR feedback - removing MEF usage from RemoteAdhocWorkspaceFactory, minor cleanup

* PR feedback

* Type and method renames, minor cleanup per PR feedback

* Renaming interface methods, removing unnecessary usage of FrozenSet

* Use ImmutableArray to store providers

* Switching to bool and out on IAutoInsertService and implementation

* Cleaned up document position info calculation per PR feedback

* Minor cleanup in RemoteAutoInsertService

* Cleanup trigger character calculation in CohostOnAutoInsertEndpoint

* Formatting changes, VsLspFactory usage

* Revert to MEF DI in RemoteAdhocWorkspaceFactory/RemoteRazorFormattingService

* Removing Rolsyn to VS LSP extension methods

* Switch to raw strings in tests and minor whitespace cleanup

* Rename per PR feedback suggestion to better indicate the purpose

* Cleanup formatting code document acquisition per PR feedback

Creating IFormattingCodeDocumentProvider service with seprate LSP and Remote implementations to provide code document appropriate for formatting.

* Removing redundant assert as compiler is already doing the check

* Unnecessary assignment cleanup

* Misc PR feedback cleanup

* Made GetGeneratedOutputAsync an extension method per PR feedback

* Remaining MEF parameter attrivute formatting changes

* Last of the PR feedback.

* Fixing most unit test failures.

Extension methods can't be used for Mock setups, so since I made GetGeneratedOutputAsync() with no parameter an extension method, I had to switch unit tests to use GeGeneratedOutputAsync(It.Any<bool>())

* Fixing last 4 unit test failures

We still had non-parameter GetGeneratedOutputAsycnc in DocumentSnapshot (even though it wasn't in IDocumentSnapshot) which was getting called internally. That was both messy (since there is now no-parameter extension method on IDocumentSnapshot) and was causing issues in tests

---------

Co-authored-by: David Wengier <david.wengier@microsoft.com>
2024-08-29 11:27:56 -07:00
David Wengier 1f45c70f4f
Write out JS comments when there would be 4 or more consecutive tildes in generated Html (#10805)
Fixes https://dev.azure.com/devdiv/DevDiv/_workitems/edit/2222322

Our use of tildes as replacement characters for C# in Html documents has
never been great, and has caused issues with JS/TS and Html tooling in
the past, but it seems there are scenarios where
large/complicated/specifically formed Razor documents can actually crash
the JS compiler. Seems it has a perf issue where lots of unary negation
(ie, `~`) causes stack size issues.

This PR mitigates the issue by encoding any stretch of C# characters
that are 4 characters or longer as a JS comment (`/*~~~*/`) so that the
compiler will ignore some of the more problematic chunks of Razor files.
There is one case where we couldn't do that, but any pressure relief
should help even if it's not 100%.
2024-08-29 17:43:54 +10:00
David Wengier ebe3878544 Update existing tests 2024-08-29 13:31:43 +10:00
David Wengier 744e9e3242 Fix integration tests to validate the change 2024-08-29 12:27:03 +10:00
David Wengier a05f9e64c0 Pass virtual document version through, and validate 2024-08-29 12:26:14 +10:00
David Wengier b650ceebd7 Cleanup and rename files to bring them to modern standards
Purely mechanical changes here - using primary constructors, interfaces over abstract classes, etc.
2024-08-29 12:25:44 +10:00
dotnet bot 562be1a220
Merge release/dev17.12 to main (#10809)
This is an automatically generated pull request from release/dev17.12
into main.


Once all conflicts are resolved and all the tests pass, you are free to
merge the pull request. 🐯

## Troubleshooting conflicts

### Identify authors of changes which introduced merge conflicts
Scroll to the bottom, then for each file containing conflicts copy its
path into the following searches:
- https://github.com/dotnet/razor/find/release/dev17.12
- https://github.com/dotnet/razor/find/main

Usually the most recent change to a file between the two branches is
considered to have introduced the conflicts, but sometimes it will be
necessary to look for the conflicting lines and check the blame in each
branch. Generally the author whose change introduced the conflicts
should pull down this PR, fix the conflicts locally, then push up a
commit resolving the conflicts.

### Resolve merge conflicts using your local repo
Sometimes merge conflicts may be present on GitHub but merging locally
will work without conflicts. This is due to differences between the
merge algorithm used in local git versus the one used by GitHub.
``` bash
git fetch --all
git checkout -t upstream/merges/release/dev17.12-to-main
git reset --hard upstream/main
git merge upstream/release/dev17.12
# Fix merge conflicts
git commit
git push upstream merges/release/dev17.12-to-main --force
```
2024-08-28 14:07:55 -07:00
Chris Sienkiewicz 27a338b0a6
Global namespace component bind (#10798)
* Don't create a taghelper with no matching rules
* Add test

---------

Co-authored-by: Jan Jones <jan.jones.cz@gmail.com>
2024-08-28 18:56:48 +00:00
Phil Allen 5eb9d0c25a
Fix find all references calls to Roslyn (#10807)
Fixes integration test failures in Find All References.

Roslyns LSP types got much more spec compliant in
https://github.com/dotnet/roslyn/pull/73911 and we were never sending
the `Context` property in our request, so deserialization failed on
their end.
2024-08-28 10:27:06 -07:00
Chris Sienkiewicz f35b6c6fe9
Change UseConsolidatedMvcViews to default to true (#10795)
* Change UseConsolidatedMvcViews to default to true
* Update baselines
* Update LSP test
2024-08-28 10:11:29 -07:00
Phil Allen 8e11180508
Fix provisional completion corrupting generated C# documents (#10806)
Fixes https://github.com/dotnet/razor/issues/10759

Initially when investigating this I was digging into buffer versions and
race conditions, but now that the editor fix is in, and we are self
versioned, the bug stood out much more obviously: A character offset was
being passed in to a parameter that expected a length 🤦‍♂️

Sadly none of the `RazorCustomMessageTarget` code is testable. Cohosting
will make this trivial though, as we would simply create a new
`Document` with the provisional change, and drop it on the floor when
we're finished.
2024-08-28 09:23:15 -07:00
David Wengier ec671dbc8a Fix find all references calls to Roslyn 2024-08-28 21:12:33 +10:00
David Wengier 54533a522e Simplify integration test to increase reliability because our formatting engine has known issues 2024-08-28 18:20:40 +10:00
David Wengier 39942a204a When undoing provisional completion, don't accidentally delete a huge large chunk of the generated file 2024-08-28 16:59:21 +10:00
David Wengier 1de43a0374 Remove stale TODO 2024-08-28 16:07:08 +10:00
David Wengier 6cc8ce5d3b Fix tooling test inputs 2024-08-28 15:04:28 +10:00
David Wengier acb9a8e19d Update compiler test baselines 2024-08-28 15:04:28 +10:00
David Wengier eba6a6a303 Test for some edges just in case 2024-08-28 15:04:28 +10:00
David Wengier e5160528c3 Improve integration tests 2024-08-28 15:04:27 +10:00
David Wengier 5bc34898ac Add integration test that proves the crash is fixed 2024-08-28 15:04:27 +10:00
David Wengier 4b69790d1a Write out comments when there would be 4 or more consecutive tildes 2024-08-28 15:04:26 +10:00
dotnet bot a530667664
Merge release/dev17.12 to main (#10803)
This is an automatically generated pull request from release/dev17.12
into main.


Once all conflicts are resolved and all the tests pass, you are free to
merge the pull request. 🐯

## Troubleshooting conflicts

### Identify authors of changes which introduced merge conflicts
Scroll to the bottom, then for each file containing conflicts copy its
path into the following searches:
- https://github.com/dotnet/razor/find/release/dev17.12
- https://github.com/dotnet/razor/find/main

Usually the most recent change to a file between the two branches is
considered to have introduced the conflicts, but sometimes it will be
necessary to look for the conflicting lines and check the blame in each
branch. Generally the author whose change introduced the conflicts
should pull down this PR, fix the conflicts locally, then push up a
commit resolving the conflicts.

### Resolve merge conflicts using your local repo
Sometimes merge conflicts may be present on GitHub but merging locally
will work without conflicts. This is due to differences between the
merge algorithm used in local git versus the one used by GitHub.
``` bash
git fetch --all
git checkout -t upstream/merges/release/dev17.12-to-main
git reset --hard upstream/main
git merge upstream/release/dev17.12
# Fix merge conflicts
git commit
git push upstream merges/release/dev17.12-to-main --force
```
2024-08-27 19:40:24 -07:00
dotnet bot da86194b6a
Merge release/dev17.11 to release/dev17.12 (#10785)
This is an automatically generated pull request from release/dev17.11
into release/dev17.12.


Once all conflicts are resolved and all the tests pass, you are free to
merge the pull request. 🐯

## Troubleshooting conflicts

### Identify authors of changes which introduced merge conflicts
Scroll to the bottom, then for each file containing conflicts copy its
path into the following searches:
- https://github.com/dotnet/razor/find/release/dev17.11
- https://github.com/dotnet/razor/find/release/dev17.12

Usually the most recent change to a file between the two branches is
considered to have introduced the conflicts, but sometimes it will be
necessary to look for the conflicting lines and check the blame in each
branch. Generally the author whose change introduced the conflicts
should pull down this PR, fix the conflicts locally, then push up a
commit resolving the conflicts.

### Resolve merge conflicts using your local repo
Sometimes merge conflicts may be present on GitHub but merging locally
will work without conflicts. This is due to differences between the
merge algorithm used in local git versus the one used by GitHub.
``` bash
git fetch --all
git checkout -t upstream/merges/release/dev17.11-to-release/dev17.12
git reset --hard upstream/release/dev17.12
git merge upstream/release/dev17.11
# Fix merge conflicts
git commit
git push upstream merges/release/dev17.11-to-release/dev17.12 --force
```
2024-08-27 15:46:50 -07:00
dotnet bot d0be044d78
Merge release/dev17.12 to main (#10801)
This is an automatically generated pull request from release/dev17.12
into main.


Once all conflicts are resolved and all the tests pass, you are free to
merge the pull request. 🐯

## Troubleshooting conflicts

### Identify authors of changes which introduced merge conflicts
Scroll to the bottom, then for each file containing conflicts copy its
path into the following searches:
- https://github.com/dotnet/razor/find/release/dev17.12
- https://github.com/dotnet/razor/find/main

Usually the most recent change to a file between the two branches is
considered to have introduced the conflicts, but sometimes it will be
necessary to look for the conflicting lines and check the blame in each
branch. Generally the author whose change introduced the conflicts
should pull down this PR, fix the conflicts locally, then push up a
commit resolving the conflicts.

### Resolve merge conflicts using your local repo
Sometimes merge conflicts may be present on GitHub but merging locally
will work without conflicts. This is due to differences between the
merge algorithm used in local git versus the one used by GitHub.
``` bash
git fetch --all
git checkout -t upstream/merges/release/dev17.12-to-main
git reset --hard upstream/main
git merge upstream/release/dev17.12
# Fix merge conflicts
git commit
git push upstream merges/release/dev17.12-to-main --force
```
2024-08-27 15:33:57 -07:00
David Barbet 79c46c0fdf Merge remote-tracking branch 'upstream/release/dev17.11' into merges/release/dev17.11-to-release/dev17.12 2024-08-27 15:26:08 -07:00
David Barbet 0dc0f6e79c
[release/dev17.12] Update dependencies from dotnet/arcade (#10799)
This pull request updates the following dependencies

[marker]: <> (Begin:761d0bec-2526-451d-fdf9-08dcc6cdae74)
## From https://github.com/dotnet/arcade
- **Subscription**: 761d0bec-2526-451d-fdf9-08dcc6cdae74
- **Build**: 20240826.3
- **Date Produced**: August 26, 2024 5:01:25 PM UTC
- **Commit**: e3bdd9a0f2a65fe037ba1adb2261eea48a840fa4
- **Branch**: refs/heads/main

[DependencyUpdate]: <> (Begin)

- **Updates**:
- **Microsoft.SourceBuild.Intermediate.arcade**: [from
9.0.0-beta.24352.2 to 9.0.0-beta.24426.3][1]
- **Microsoft.DotNet.Arcade.Sdk**: [from 9.0.0-beta.24352.2 to
9.0.0-beta.24426.3][1]

[1]: 4a7d983f83...e3bdd9a0f2

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates sdk.version to 9.0.100-preview.7.24407.12
  - Updates tools.dotnet to 9.0.100-preview.7.24407.12

[marker]: <> (End:761d0bec-2526-451d-fdf9-08dcc6cdae74)
2024-08-27 13:24:50 -07:00
dotnet-maestro[bot] 5a4e0a72b4 Update dependencies from https://github.com/dotnet/arcade build 20240826.3
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24352.2 -> To Version 9.0.0-beta.24426.3
2024-08-27 19:24:28 +00:00
David Barbet 7ed43a1fe7
[main] Update dependencies from dotnet/arcade (#10605)
Coherency update: Failed to perform coherency update for one or more
dependencies. Please review the GitHub checks or run `darc
update-dependencies --coherency-only` locally against
darc-main-a20bf2b8-a79a-4f26-a141-1afa2bfa58d0 for more information.

[marker]: <> (Begin:2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d)
## From https://github.com/dotnet/arcade
- **Subscription**: 2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d
- **Build**: 20240826.3
- **Date Produced**: August 26, 2024 5:01:25 PM UTC
- **Commit**: e3bdd9a0f2a65fe037ba1adb2261eea48a840fa4
- **Branch**: refs/heads/main

[DependencyUpdate]: <> (Begin)

- **Updates**:
- **Microsoft.SourceBuild.Intermediate.arcade**: [from
9.0.0-beta.24423.2 to 9.0.0-beta.24426.3][1]
- **Microsoft.DotNet.Arcade.Sdk**: [from 9.0.0-beta.24423.2 to
9.0.0-beta.24426.3][1]

[1]: 9159926865...e3bdd9a0f2

[DependencyUpdate]: <> (End)


[marker]: <> (End:2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d)
2024-08-27 12:12:18 -07:00
Dustin Campbell 73fb2dfaed Remove PooledArrayBuilder<RazorDiagnostic> from ComputeAllDiagnostics 2024-08-27 11:00:18 -07:00
Dustin Campbell ac1ea0837f Prefer collection expression over ToList() 2024-08-27 11:00:17 -07:00