Commit Graph

269 Commits

Author SHA1 Message Date
Ajay Bhargav Baaskaran f9d4fba39d Added a taghelpers and imports overload to Process and ProcessDesignTime
We want to have a way to specify the taghelper descriptors and imports to use while
processing a specific document.
- Added an overload to Process and ProcessDesignTime to take in a list
TagHelperDescriptors and a list of imports
- Added the corresponding CreateCodeDocumentCore overload
- Added GetTagHelpers and SetTagHelpers extension methods for
CodeDocument
- Added the necessary plumbing to use the taghelpers from the
CodeDocument when available and fallback logic.
- Added DocumentImportsTracker and updated background code generation
logic to use the new overload
- Added/updated tests
2018-05-22 11:40:21 -07:00
Ryan Nowak 9b911cbb6e Add some benchmarks for project system
Adds a few benchmarks for things we're working on, also addressed a few
small perf issues that have an impact for large documents.
2018-05-16 13:21:39 -07:00
Ryan Nowak f67458f156 Fix #2298 simplify TagHelperDescriptor hash
The hash code implementation here is exhaustive when it doesn't need to
be. Slimming this down to a much more reasonable set of things for perf
reasons.
2018-04-30 13:55:55 -07:00
Ryan Nowak e2edc280c5 Add documents, engine, tag helpers to snapshot
The project snapshot now maintains a RazorProjectEngine as well as set
of Tag Helpers that are known for that snapshot.

Pivoted some more services to be snapshot-centric.

Also added the ability to track .cshtml documents to the project system.
For now most components just ignore document changes.
2018-04-25 19:05:54 -04:00
Ajay Bhargav Baaskaran 2eb9d4d783 Merge branch 'rel/vsmac15.7' into dev 2018-04-20 13:48:35 -07:00
Ajay Bhargav Baaskaran 2be905def4 Make newline comparison work crossplat 2018-04-20 13:34:14 -07:00
Ajay Bhargav Baaskaran f8dc5c4702 Obsoleted IRazorEngineBuilder APIs 2018-04-13 12:35:53 -07:00
Ajay Bhargav Baaskaran 5504374125 Preserve directive node diagnostics in document node 2018-04-10 10:24:21 -07:00
Ajay Bhargav Baaskaran 6270c1f47e Merge branch 'rel/vs15.7' into dev 2018-04-05 16:28:17 -07:00
Ryan Nowak 4cd24a2b08 Add experimental flag to un-special-case data-
This change allows blazor to opt into treating data- attributes the same
way as normal attributes in the parser.
2018-04-05 15:27:04 -07:00
Ryan Nowak d1c0ab587c Add support for type parameters to class nodes
This change will allow someone extending Razor to use generic type
parameters in generated classes.

There's no user-level extensibility provided here yet, as in there is no
language support for adding type parameters.
2018-04-05 15:26:42 -07:00
N. Taylor Mullen c874f84c3d Revert "Revert "Make Razor HTML Comments aware (#2178)""
This reverts commit 1f3f4b79da.
2018-03-20 15:23:53 -07:00
N. Taylor Mullen 1f3f4b79da Revert "Make Razor HTML Comments aware (#2178)"
This reverts commit b58986414e.
2018-03-20 11:54:09 -07:00
Ajay Bhargav Baaskaran c934bd08ac Merge branch 'rel/vs15.7' into release/2.1 2018-03-19 19:14:51 -07:00
Ajay Bhargav Baaskaran 9dc7c65205 Fix: Missing Html intellisense after directives 2018-03-19 17:16:11 -07:00
Ajay Bhargav Baaskaran fab70c81ec Merge branch 'rel/vs15.7' into release/2.1 2018-03-19 15:57:46 -07:00
Ajay Bhargav Baaskaran 79e744f691 Handle unreadable import items in design time 2018-03-19 15:39:25 -07:00
Ryan Nowak 130a751dfa Add an experimental Language Version
Adding a secret language version for Blazor and other experiments.
2018-03-19 14:10:33 -07:00
Ryan Nowak be53b64fc1 Add an experimental Language Version
Adding a secret language version for Blazor and other experiments.
2018-03-19 13:21:06 -07:00
Pranav K 7ff56dadf4 CodeGen RouteTemplate as a RazorCompiledItemAttribute 2018-03-19 12:37:04 -07:00
Ryan Brandenburg 7a7cc5ab1e Set 2.0 baselines 2018-03-19 10:46:23 -07:00
Artak b58986414e
Make Razor HTML Comments aware (#2178)
* Merging changes (from dev branch; doing manually to squash them really)of HTML Parser to be aware of HTML Comments so TagHelpers don't complain about comments as content.
2018-03-19 10:18:29 -07:00
Artak a9004e503e
Merge pull request #2061 from aspnet/artakm/RestrictChildrenComments
Ignoring HTML comments in tag helper's body. Updated the markup parser to be aware of HTML Comments.
2018-03-12 11:17:57 -07:00
Artak Mkrtchyan ae94c3c452
- Updated naming for methods to be more intuitive.
- Added extra tests for clarity
- Added extra comments to clarify complex areas
2018-03-09 18:18:16 -08:00
Artak Mkrtchyan 3e22c16930
Added extra tests for non-covered scenarios:
- For older version of Razor the HTML comments will be complained about by TahHelperRewriter
- RazorParserFeatureFlags tests now ensure that AllowHtmlCommentsInTagHelpers is true in 2.1 version  and false in older versions
- Added extra test for IsHtmlCommentAhead to make sure Razor code transition is allowed in comment tag
- Moved the unallowed html comment ending to a static array.
2018-03-09 17:18:57 -08:00
Artak Mkrtchyan 6c8c6a777c
- Clarified the code where the comment content ending is checked to be allowed or not.
- Added more unit tests
2018-03-09 09:16:17 -08:00
Artak Mkrtchyan 1318a83511
Fixed the NextIs method to put back the symbol, when at the end of the file 2018-03-08 17:13:34 -08:00
Artak Mkrtchyan faccd90aa5
Added unit-tests to validate new methods 2018-03-08 16:36:56 -08:00
Ryan Nowak 2f79b90af5 Merge branch 'rel/vs15.7' into dev 2018-03-08 15:49:01 -08:00
Ryan Nowak 989a6c699f Don't add the tag helper provider by default
Since the default tag helper provider is used by MVC then MVC should
include it. Now that Blazor is in the mix we shouldn't include it for
all configurations.
2018-03-08 15:41:34 -08:00
Artak Mkrtchyan 7357fa04ea
Applied PR feedback (unit testst will be added as part of a separate commit) 2018-03-08 13:38:35 -08:00
Artak Mkrtchyan 32e2c533c7
Naming improvements and test code cleanup 2018-03-08 13:37:05 -08:00
Artak Mkrtchyan 33814fb634
Updated the Comments detection to comply with HTML 5 specification 2018-03-08 13:37:04 -08:00
Artak Mkrtchyan 0af42204eb
Added the AllowHtmlCommentsInTagHelpers feature flag to control behavior of having comments in TagHelpers 2018-03-08 13:37:04 -08:00
Artak Mkrtchyan e1fbea24f1
HtmlMarkupParser is now aware of HtmlComment blocks. Majority (if not all, will confirm soon) tests have been updated to account for HtmlComment blocks. 2018-03-08 13:37:03 -08:00
Artak Mkrtchyan ad8485addd
Added new BlockType - HtmlComment
Updated the HtmlMarkupParser to understand the HtmlCOmments, and treat those as blocks.
2018-03-08 13:37:03 -08:00
Artak Mkrtchyan a940a4cd91
Moved the comment check into the "ValidateParentAllowsContent" method 2018-03-08 13:37:02 -08:00
Artak Mkrtchyan 679acdc5d4
Ignoring razor comments during validation 2018-03-08 13:37:02 -08:00
Artak Mkrtchyan 47228dd822
Revert unnecessary change 2018-03-08 13:37:01 -08:00
Artak Mkrtchyan 41b7d90ea8
Ignoring markup comments during validation 2018-03-08 13:37:01 -08:00
Artak Mkrtchyan e6f68eb244
Added a unit test to repro the issue 2018-03-08 13:37:01 -08:00
N. Taylor Mullen 5c456fbd04 Merge branch 'rel/vs15.7' into dev
# Conflicts:
#	build/dependencies.props
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshot.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotManager.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotWorker.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DefaultProjectSnapshotWorkerFactory.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs
#	src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotUpdateContext.cs
#	src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/Legacy/LegacyTagHelperResolver.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorConfiguration.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorExtension.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorGeneral.cs
#	src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/Rules/RazorProjectProperties.cs
#	test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs
#	test/Microsoft.VisualStudio.Editor.Razor.Test/Microsoft.VisualStudio.Editor.Razor.Test.csproj
2018-03-05 22:58:07 -08:00
Ryan Nowak 00485d9f1b Fix #2099 - make AssemblyExtension public
This is needed when a runtime wants to construct its own configuration
manually, especially useful in tests.

(cherry picked from commit 92c511b2b4)
2018-03-01 11:05:35 -08:00
Ryan Nowak 3e0360a891 Fix #2041 - Add static constructor to DocumentWriter
The instance Create method was always supposed to be static.

(cherry picked from commit e05c2abd94)
2018-03-01 10:54:16 -08:00
Ryan Nowak 92c511b2b4 Fix #2099 - make AssemblyExtension public
This is needed when a runtime wants to construct its own configuration
manually, especially useful in tests.
2018-02-28 17:58:21 -08:00
Ryan Nowak e05c2abd94 Fix #2041 - Add static constructor to DocumentWriter
The instance Create method was always supposed to be static.
2018-02-28 13:46:18 -08:00
N. Taylor Mullen b538ceba93 Change final code documents to not contain non-existent imports.
- Existent imports are imports that have content that contribute to the processing of a Razor document. Prior to this we had a legacy expectation that code documents had empty markers in them for all of their import locations. This proved troublesome when cross-referencing files that had file paths and were supposed to be existent but weren't in metadata. Now that we have a project engine with a de-coupled import feature we can rely on the import feature for finding all locations of important files and then strip out any non-existent items.
2018-02-23 16:30:22 -08:00
N. Taylor Mullen c5e83c61f8 Changed AddDefaultImports to take strings instead of project items.
- Strings here was important because any import added to the system dynamically needs to eventually make its way back to being a project item. With strings we can state that they do exist (have content) but do not have any file paths associated.
- Updated all call sites to use the new AddDefaultImports string based api.

#2080
2018-02-21 09:42:40 -08:00
Ryan Nowak 43f8108ac3 Merge branch 'rel/vs15.7' into dev 2018-02-19 16:45:49 -08:00
Ryan Nowak 5008c7803c Add a project system
Step 1: Add HostProject

This is a somewhat complex addition to the ProjectSnapshotManager. Now
that we accept updates from the underlying IDE project system we need to
coordinate those with the Workspace.

This means that ProjectSnapshot itself now also has a version concept.

Step 2: Introduce a new project system based on CPS

We use project capabilities defined by the Razor SDK to determine
whether to rely on MSBuild evaluation to detect the configuration or
whether to fallback to assembly-based detection.

Step 3: Flow RazorConfiguration everywhere

We use now expose the RazorConfiguration to the language service and
editor. This means that we no longer need to detect the project's
configuration asynchronously, it happens much faster now.
2018-02-19 14:39:19 -08:00