Commit Graph

1271 Commits

Author SHA1 Message Date
Ryan Nowak 7a52baf18f Fix #2054 - make TagHelperResolutionResult internal
This type isn't used by WTE anymore.
2018-09-24 10:35:17 -07:00
N. Taylor Mullen d54ffabd26 Update LanguageServer IVT. 2018-09-21 12:51:36 -07:00
N. Taylor Mullen 2b1bdb7342 Move RazorCompletionFactsService to CodeAnalysis.Workspaces.Razor.
- Also updated workspaces test project to also compile for netcoreapp2.2.
2018-09-18 17:34:45 -07:00
N. Taylor Mullen d2d84d00f5 Allow GeneratedCodeContainer to accept initial output. 2018-09-10 16:14:25 -07:00
N. Taylor Mullen da935bfa95 Generated document output persists result to generated code container.
- Prior to this we had a `BackgroundDocumentGenerator` that would constantly be updating generated code containers. With this changes we've changed the details in how a `GeneratedCodeContainer` can be mutated. It can now be touched from any thread and is updated when an underlying `DocumentSnapshot` has available content. However, if a generated output comes through that's older then the last seen output we no-op.
- Removed `BackgroundDocumentGenerator` SetOutput logic.
- Updated tests to react to new behavior of `GetGeneratedOutputAsync`.
- Added new test to verify getting generated output results in the setting of the host documents output.
2018-09-10 15:24:35 -07:00
N. Taylor Mullen e8f8727193 Merge branch 'release/2.2'
# Conflicts:
#	build/dependencies.props
#	korebuild-lock.txt
#	version.props
2018-09-05 17:24:25 -07:00
N. Taylor Mullen 3a281b8f58 Allow TagHelpers to occur after unclosed C# blocks without assert failures.
- This scenario wasn't considered previously.

#2566
2018-09-05 17:22:17 -07:00
N. Taylor Mullen 4619d59828 Add IVT to Razor LanguageServer.
- `LanguageServer.StrongNamed` isn't a thing anymore.
2018-08-30 11:26:02 -07:00
N. Taylor Mullen b8ff40fbbd Merge remote-tracking branch 'origin/release/2.2' 2018-08-29 16:00:27 -07:00
N. Taylor Mullen 852ad8df87 Allow content to be written after caught exception from child TagHelper.
- The issue was that the `executeChildContentAsync` call was stopping the invocation of the `_endTagHelperWritingScope`. Therefore, we'd never finish the TagHelper content scope and all following content would be ignored.
- Added two tests to validate the new functionality.

#2561
2018-08-29 16:00:15 -07:00
Ajay Bhargav Baaskaran 9e4c4079f2
Renamed HtmlTextSyntax to HtmlTextLiteralSyntax for consistency (#2560)
* Renamed HtmlTextSyntax to HtmlTextLiteralSyntax for consistency

* Generated baselines
2018-08-28 14:00:32 -07:00
Ajay Bhargav Baaskaran f4808b50b5 Renamed WhiteSpace to Whitespace 2018-08-24 15:45:55 -07:00
Ajay Bhargav Baaskaran 27a9991f21
Auto generate CSharp syntax tree nodes (#2550)
* Auto generate CSharp syntax tree nodes
- Auto generated syntax nodes, visitors and factories
- Renamed RazorComment to RazorCommentLiteral to avoid a conflict
- Modified the Visit() contract
- Added new SyntaxKinds
- Regenerated baselines
2018-08-21 14:20:33 -07:00
Ajay Bhargav Baaskaran db2a142132
Updated the tokenizer and parser to operate on SyntaxTokens directly (#2540)
* Updated the tokenizer and parser to operate on SyntaxTokens directly
- The tokenizer and parser now operates directly on SyntaxTokens (Green)
- The SyntaxToken(Red) is now created when the Span is built with the correct parent and position
- All other passes that run after the parsing is complete(TagHelperRewriter etc) will operate on the Red tokens.
- There is now only one type for all SyntaxTokens. They are differentiated by their SyntaxKind.
- Added equivalence checking for tokens
- Updated test code to react
- Regenerated baselines
2018-08-16 16:11:01 -07:00
Ryan Nowak 13e13d7632 Add generated documents to workspace 2018-08-15 10:54:32 -07:00
N. Taylor Mullen eec42e9a31 Merge branch 'release/2.2'
# Conflicts:
#	build/dependencies.props
#	korebuild-lock.txt
2018-08-14 11:23:31 -07:00
Marcin Burak 04e58d6ee4 Changed /* */ style comments to // style comments 2018-08-14 11:21:51 -07:00
Ryan Nowak 585e6cd3fe Introduces a 'formatter' for formatting the IR
The new Formatter is used in debugger display, to resolve #2264

The next iteration (assuming we like this) will be to replat our testing
baseline infrastructure on top of this, and then start sharing that with
Blazor - related to #2265.

I found when implementing debugger display that I was duplicating a lot
of details between testing and this.

I also want to convert the Blazor tests to use shared infrastructure.
Right now the Blazor tests use a modified version of the Razor
infrastructure that has different features.
2018-08-13 13:09:49 -07:00
Ajay Bhargav Baaskaran 9a9931d59f
Initial infrastrucure for a better html parser (#2522)
Initial infrastrucure for a better html parser
- Added new syntax node types that follow Roslyn's red/green pattern
- Modified the html text node in the current syntax tree to use the new
nodes
- Updated test infrastructure
- Generated baselines
2018-08-13 11:26:24 -07:00
N. Taylor Mullen 220595393a Expose RazorCompletionFactsService. 2018-08-10 14:52:39 -07:00
Artak 692e09b017
Fixes #2491: Treating RazorCommentTransition-s similar to Transitions in tag content (#2531)
* Treating RazorCommentTransition-s similar to Transitions in tag content
2018-08-10 14:46:58 -07:00
N. Taylor Mullen 572b55690d Refactor completion logic into standalone service.
- Migrated the completion item source provider and the legacy directive completion provider to use the new service.
- Cleaned up duplicate tests that were both verifying common completion functionality.
- Ensured that the legacy `RazorDirectiveCompletionProvider` did not result in additional Razor assembly loads when in C# scenarios.

#2530
2018-08-10 14:46:13 -07:00
N. Taylor Mullen aec88e3eba Change Razor directive completions to use new completions API.
- Kept the same behavior as we previously had with Razor directive completions.
- Attempted adding additional functionalities such as lighting up Razor directive completion when completion was invoked on top of Razor directives (non-C#) but ran into issues involving the core HTML editor not consuming the new completion APIs yet. That's something we'll have to re-visit once they move to the new completion APIs.
- Added tests to validate all aspects of new completion APIs.
- Made completion provider turn on and off based off of feature flag.

#1743
#1813
2018-08-10 11:37:47 -07:00
Ajay Bhargav Baaskaran 3f429d02ab
Merge pull request #2521 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-07-31 13:01:44 -07:00
Ajay Bhargav Baaskaran a4b91d6dce Flatten AggregateExceptions in rzc 2018-07-31 11:11:43 -07:00
N. Taylor Mullen 94a1314146 Add IVT to strong name shim for investigative purposes. 2018-07-30 18:07:54 -07:00
N. Taylor Mullen cb557cf771 Changed `GetDesiredIndentation` to be resilient to our SyntaxTree which occasionally has gaps.
- Added a test to cover the scenario.

#2489
2018-07-30 10:45:18 -07:00
N. Taylor Mullen 38e145389e Fix BackgroundDocumentGenerator flaky tests.
- Some time spans were too aggressive for parsing a Razor file on a slow environment.
- Fixed an obvious race where we'd expect 0 pending notifications when it was possible to be in the process of clearing notifications.

#2506
2018-07-27 14:49:12 -07:00
Ajay Bhargav Baaskaran 8e23eb38b4 Honor NoBuild flag during publish 2018-07-26 11:40:38 -07:00
Doug Bunting 684e7855a6
Handle `null` entries correctly for `IsEmptyOrWhiteSpace`
- #2497

nits:
- take VS suggestions
- un-scramble `IsEmptyOrWhiteSpaceCore(...)` for readability
2018-07-23 15:25:41 -07:00
Ajay Bhargav Baaskaran 7f6b05149d Generate deterministic unique ids for tag helpers 2018-07-17 14:01:42 -07:00
Ajay Bhargav Baaskaran 21f2edce16 Generate and verify baselines for ClassifiedSpans and TagHelperSpans
- Moved GetClassifiedSpans and GetTagHelperSpans logic to Razor.Language
2018-07-17 10:54:42 -07:00
N. Taylor Mullen cfd63e1e2e Change HTML splitting logic to not split on surrogate pairs.
- When a surrogate pair is about to be split down the middle we reduce the size of our split by 1 character. This way we split right before a surrogate pair. In the case of zero width joiners, if we split on a zero width joiner we still render valid bytes because the zero width joiner by itself can stand alone.
- Added tests for the various split cases.

#2470
2018-07-13 17:18:56 -07:00
Ajay Bhargav Baaskaran ce4780a830 Renamed symbol to token everywhere
- Updated Resources
- Updated test code
- Regenerated baselines
- Added exclusions for apicheck (See https://github.com/aspnet/BuildTools/issues/704)
2018-07-06 16:29:36 -07:00
Ajay Bhargav Baaskaran a92089d2f9 Converted CSharpDirectivesTest to use baselines 2018-06-26 15:17:36 -07:00
Daniel Eisterhold 7101953c1e Update TagHelperBlockRewriter.cs 2018-06-26 08:24:02 -07:00
Daniel Eisterhold 331f0b15cd Update ServerConnection.cs 2018-06-26 07:54:07 -07:00
Ajay Bhargav Baaskaran 999c24d78d Converted more parser tests to baselines
- Converted CSharpAutoCompleteTest
2018-06-25 11:43:17 -07:00
N. Taylor Mullen fc17ee0749 Update Razor SDK packing logic to not include Pack at properties layer.
- Added test to verify that no-build scenarios work as expected.

#2378
2018-06-20 15:20:01 -07:00
N. Taylor Mullen c7e0207d9d Revert "Update Razor SDK packing logic to not include Pack at properties layer."
This reverts commit 620105cc5e.
2018-06-20 11:39:55 -07:00
Ajay Bhargav Baaskaran b821ce8b8e First step in converting parser tests to use baselines
- Added the necessary infrastructure to serialize and verify the syntax
tree
- Updated ParserVisitor to be overrideable
- Made CSharpVerbatimBlockTest to use baselines
2018-06-19 15:57:05 -07:00
N. Taylor Mullen 620105cc5e Update Razor SDK packing logic to not include Pack at properties layer.
- We now rely on the Razor source inputs layer to add packing to cshtml content items.

#2378
2018-06-19 15:28:50 -07:00
Ajay Bhargav Baaskaran 17e3aa8ee4 Handle pipe name with whitespace properly 2018-06-19 15:10:49 -07:00
Pranav K 9677553a33 Don't specify MainEntryPoint when compiling Razor assembly 2018-06-19 13:31:49 -07:00
N. Taylor Mullen 41fad8a33a Don't smart indent code inside of Razor block constructs.
- Prior to this change we weren't strict enough with where our smart indenter ran. We made the assumption that every code block could be smart indented and then Roslyn would "do the right thing". However, in nested code block scenarios we found that Roslyn and us would both indent resulting in extra newlines. These changes make the criteria for applying smart indentation a little stricter.
- Updated directive code block parsing to add a C# marker symbol in cases of an empty code block directive.
- Added unit tests to verify new smart indenter behavior.
- Updated existing tests to expect new syntax tree marker symbol for empty directive bits.
- Regenerated baselines.

#2410
2018-06-18 20:38:01 -07:00
N. Taylor Mullen 1aa15374b5 Add partial parsing of `@functions` directive body.
- Added ability to understand valid inserts, deletes and replacements for the `@functions` directive (and any other directive that uses our extensible code block bits).
- Added unit tests.
- Updated existing tests.
- Found an issue when completing some C# items the auto-completions would impact the underlying snapshot after we'd captured the change. Fixed this by forcing a reparse when we detect that our understanding of the latest snapshot and the actual latest snapshot diverge.

#2408
2018-06-18 17:11:40 -07:00
Pranav K dbf13d6538 Changes per PR comments 2018-06-15 13:53:38 -07:00
Pranav K a57b7c4d7f Don't discover tag helpers if some references are missing
A common cause for runtime view compilation failure in MVC is when an application is published
without reference assemblies. MVC usually handles this at compilation, by looking for specific
error codes. More recently, TagHelper discovery fails with an not-so-helpful error message in this
scenario. This change attempts to add a little more error checking to cover the most common cases
2018-06-15 13:53:38 -07:00
N. Taylor Mullen d6f3a1bd22 Enable using directive IntelliSense auto-completion.
- Allow identical `@using` directives in the primary document. This means that if a user types `@using System` twice in the primary document (i.e. `Index.cshtml`) then we'll generate that using statement twice; this enables proper C# IntelliSense to light up on both using statements and allows auto-completion to work because there's no more magical distinction logic for Razor code that is in the current document.
- Prior to this change if you had two identical using statements in the same document one would be in no-mans land mapped to nothing (not C#, not HTML) and the other would be mapped to C#; the second a user differentiated the two statements (i.e. adding a `.`) we'd distinctify the using statements resulting in an invalid completion.
- This PR has an end-user impact where they will now receive the normal C# warning about having duplicate using. I treated this prior behavior more as a bug because we threw away the first using directive instance which impacted editing and in general was a silly thing to correct for the user.
- Added new integration test showing how using directives are not de-duplicated in the primary document.

#1255
2018-06-15 13:17:09 -07:00
Ryan Nowak af63afdae7 Add partial parsing for parenthesis
- This is part of a fix for #1255 - this change enables signature help in implicit expressions by improving the partial parsing. We're now smart enough about the contents of an implicit expression and attempt to balance parenthesis to determine if we should not full parse.

#1255
2018-06-15 11:22:03 -07:00