Commit Graph

7837 Commits

Author SHA1 Message Date
b60cd3e94a 从官方版本合并到本地 2021-08-10 19:26:23 -04:00
Daniel Trevino
e25d35f4cb refactor(compiler-cli): add test for BananaInBoxCheck ()
Create the test package for extended_template_diagnostics and add a unit
test for the `BananaInBoxCheck`.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
d6411c2729 refactor(compiler-cli): add BananaInBoxCheck to the template checks ()
Add the implementation of a Template Check that ensures the correct
use of two-way binding syntax. Generates a warning when
'([foo])="bar"' is found instead of '[(foo)]="bar"'.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
9a0a2b6e75 refactor(compiler-cli): visit inputs and outputs for elements and templates ()
This commit adds to the exisiting `RecursiveVisitor` and visits inputs
and outputs for elements and templates.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
29a5a90111 refactor(compiler-cli): move getSourceCodeForDiagnostic to utils ()
Export `getSourceCodeForDiagnostic` from `ngtsc/testing` to make it
available for other packages. This will help confirm that the source
code is correct in other tests.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
29e2bc7d91 refactor(compiler-cli): move typecheck test utils into its own package ()
This commit moves the test utils used in the typechecking tests into its
own package. This makes them available to be used in the tests of a
different package.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
be8a8e17a8 refactor(compiler-cli): introduce getExtendedTemplateDiagnosticsForComponent function ()
Add function to get extended template diagnostics generated by all the template checks.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
c055cfe281 refactor(compiler-cli): make makeTemplateDiagnostic wrapper error ()
specific

This commit makes the wrapper function `makeTemplateDiagnostic` take an
ErrorCode as a type for the `ts.Diagnostic`s to be generated.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Daniel Trevino
3a092d6cea refactor(compiler-cli): introduce extended package to typecheck with it's API ()
This commit introduces //packages/compiler-cli/src/ngtsc/typecheck/extended
as a container for a new phase of diagnostics generation. The API provides an
interface for new template checks to implement and generate template diagnostics.

Refs 

PR Close 
2021-08-10 15:55:49 -07:00
Andrew Kushnir
cb988aebb0 refactor(core): replace references to goog.LOCALE with goog.getLocale() ()
It is necessary in order to distinguish 2 different reasons for referencing the compiled-in locale.

1. Some code just needs to pass the locale value on to logic that actually uses it.
2. Other code uses the locale value to select locale-specific user-visible data and behavior.

Code modified by this change is of the first kind and should use `goog.getLocale()` in the future.

Note: there are still references to the `goog.LOCALE` in Angular codebase, but they are of second type.

PR Close 
2021-08-10 10:35:26 -07:00
Andrew Scott
bbad42310b fix(router): ensure check for match options is compatible with property renaming ()
After renaming, 'paths' is not in routerLinkOptions since it's been renamed.

PR Close 
2021-08-09 10:26:07 -07:00
Jon Rimmer
784671597e fix(router): Allow question marks in query param values ()
According to the URI spec, question mark characters are valid in query data,
so these should accepted by the param parsing.

See https://tools.ietf.org/html/rfc3986#section-3.4

Fixes 

BREAKING CHANGE: The default url serializer would previously drop
everything after and including a question mark in query parameters. That
is, for a navigation to `/path?q=hello?&other=123`, the query
params would be parsed to just `{q: 'hello'}`. This is
incorrect because the URI spec allows for question mark characers in
query data. This change will now correctly parse the params for the
above example to be `{v: 'hello?', other: '123'}`.

PR Close 
2021-08-06 10:49:37 -07:00
Dylan Hunn
e49fc96ed3 feat(forms): Make Form Statuses use stricter types. ()
Specifically: narrow the type used for form statuses from string to a union of possible statuses. Change the API methods from any to use the new type.

This is a breaking change. However, as discussed in the PR, breakage seems minimal, and google3 has been prepped to land this.

Background: we uncovered these any typings in the course of design work for typed forms. They could be fixed in a non-breaking manner by piggybacking them on top of the new typed forms generics, but it would be much cleaner to fix them separately if possible.

BREAKING CHANGE:

A new type called `FormControlStatus` has been introduced, which is a union of all possible status strings for form controls. `AbstractControl.status` has been narrowed from `string` to `FormControlStatus`, and `statusChanges` has been narrowed from `Observable<any>` to `Observable<FormControlStatus>`. Most applications should consume the new types seamlessly. Any breakage caused by this change is likely due to one of the following two problems: (1) the app is comparing `AbstractControl.status` against a string which is not a valid status; or, (2) the app is using `statusChanges` events as if they were something other than strings.

PR Close 
2021-08-04 16:28:20 -07:00
Kristiyan Kostadinov
8628826535 fix(core): incorrect error reported when trying to re-create view which had an error during creation ()
Currently if a view throws an error during creation mode, we mark it as `incompleteFirstPass` so that we can try to recover later. The recovery is only possible inside component views.

The problem is that when this was introduced, I forgot to flip the `firstCreatePass` when an error is thrown which meant that calling `renderView` on the same component again is allowed. It will eventually hit an assertion which can be confusing for the end user. This issue only manifests itself when rendering views "manually" through `ViewContainerRef` (e.g. using `NgIf`).

These changes flip the `firstCreatePass` back to false on errors so that trying to re-render the same view will throw an error which is consistent to the one that broke the view during creation.

Fixes .

PR Close 
2021-08-04 08:58:28 -07:00
atscott
f99ec27596 Revert "refactor(ngcc): remove unused import ()" ()
This reverts commit 42265cca1c0088b9623a94cfb4a39e9690e75234.

PR Close 
2021-08-03 15:38:55 -07:00
atscott
064e705eef Revert "test(compiler-cli): clarify source-map expectations in compliance tests ()" ()
This reverts commit 29f9888a985b14cf1025105baa1fd262c751cc10.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
9436f4bf77 Revert "refactor(compiler): remove cyclic dependencies ()" ()
This reverts commit 75855196e320022e79202ccaeb9be000da55b9eb.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
dda75ca1d0 Revert "refactor(compiler): support interpolation tokens when lexing markup ()" ()
This reverts commit c8a46bfdcd5dac0044c4322a5b3967163056b339.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
443ece4587 Revert "refactor(compiler): share isQuote() via chars.ts ()" ()
This reverts commit 3d3b69ff81c593602b75ee8eec60b36ecc09c767.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
77731b8fe8 Revert "refactor(compiler): support interpolation tokens when lexing attribute values ()" ()
This reverts commit c516e252fcb199f2f503db5dc6ce563a299da010.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
8d8ab4775c Revert "refactor(compiler): support encoded entity tokens when lexing markup ()" ()
This reverts commit 942b24d5ea5d36ad4e53ed435bda35a6ae6876c9.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
ea5ed4e4d4 Revert "refactor(compiler): expose token parts in Text nodes ()" ()
This reverts commit 8a54896a91512131fbfb0b3d2f5440aec792cbfd.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
6f05dd8062 Revert "test(compiler): check fullStart source-span ()" ()
This reverts commit 973f9b8d1957d5479f5813664d35fd445f38e525.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
dd82bbfa27 Revert "fix(compiler): include leading whitespace in source-spans of i18n messages ()" ()
This reverts commit f08516db09df64c075f273159a15f80c792c96f0.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
8b6f7ac36b Revert "refactor(compiler): define interfaces for each lexer token ()" ()
This reverts commit 9b3d4f5575bfccfbbfb943dc9689f3915dd63752.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
fac6ea5fae Revert "test(compiler): check that the parser supports prematurely terminated interpolations ()" ()
This reverts commit 11ebe21d0dc8d82970153007e780800c87a76021.

PR Close 
2021-08-03 15:38:54 -07:00
atscott
28651eb9c1 Revert "refactor(compiler): use === rather than == in the ml_parser ()" ()
This reverts commit 28b0c45fde59da35a797cbdcceba973dbbb497a4.

PR Close 
2021-08-03 15:38:53 -07:00
atscott
f85b5f9dbd Revert "test(compiler): add a test for parsing multiline expressions in attributes ()" ()
This reverts commit fe1265158051ec3a90945bbc199af8c271b52842.

PR Close 
2021-08-03 15:38:53 -07:00
ivanwonder
f0c5ba08f6 fix(language-service): global autocomplete doesn't work when the user tries to modify the symbol ()
When the user tries to trigger suggestions from an interruption,
the LS should provide the global completions. For example,
`[input]="t¦"`, the `t` can be the `true` or the symbol from
the component context.

PR Close 
2021-08-02 17:08:30 -07:00
Kristiyan Kostadinov
9a3cf661a2 refactor(core): update peerDependencies to allow rxjs7 ()
We can't update the framework to rxjs7 until version 13, because it contains breaking changes, but we can allow users to opt into it since all of our code should be compatible.

These changes expand the allowed version range of rxjs and add an integration test to verify that we don't get compilation errors. Note that we also have a test that runs the AIO examples against rxjs 7 already ().

Fixes .

PR Close 
2021-08-02 13:55:01 -07:00
Andrew Kushnir
8861d73e7f build: rename shims_for_IE.js -> shims_for_internal_tests.js ()
This commit renames shims_for_IE.js -> shims_for_internal_tests.js, since there are no IE shims there anymore (there are still shims for older Safari and Android versions).

PR Close 
2021-08-02 10:38:42 -07:00
Andrew Kushnir
892ae85873 ci: remove IE11 from the list of browsers used during CI ()
This commit performs several updates to stop running tests in IE11 on CI (since IE11 support was deprecated in v12 and will be dropped in v13).

PR Close 
2021-08-02 10:38:42 -07:00
Pete Bacon Darwin
fe12651580 test(compiler): add a test for parsing multiline expressions in attributes ()
This tests a scenario that was failing in an internal project.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
28b0c45fde refactor(compiler): use === rather than == in the ml_parser ()
This is a simple tidy up commit to move to the more specific `===`
comparison operator in the HTML lexer/parser.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
11ebe21d0d test(compiler): check that the parser supports prematurely terminated interpolations ()
Such interpolations turned up during internal testing at Google, so this
commit adds a test to prevent regressions.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
9b3d4f5575 refactor(compiler): define interfaces for each lexer token ()
These token interfaces will make it easier to reason about tokens in the
parser and in specs.

Previously, it was never clear what items could appear in the `parts`
array of a token given a particular `TokenType`. Now, each token interface
declares a labelled tuple for the parts, which helps to document the token
better.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
f08516db09 fix(compiler): include leading whitespace in source-spans of i18n messages ()
Previously, the way templates were tokenized meant that we lost information
about the location of interpolations if the template contained encoded HTML
entities. This meant that the mapping back to the source interpolated strings
could be offset incorrectly.

Also, the source-span assigned to an i18n message did not include leading
whitespace. This confused the output source-mappings so that the first text
nodes of the message stopped at the first non-whitespace character.

This commit makes use of the previous refactorings, where more fine grain
information was provided in text tokens, to enable the parser to identify
the location of the interpolations in the original source more accurately.

Fixes 

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
973f9b8d19 test(compiler): check fullStart source-span ()
The tests were checking that the source-span of parsed HTML nodes were
accurate, but they were not checking the span when it includes the
"leading trivia", which are given by the `fullStart` rather than `start`
location.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
8a54896a91 refactor(compiler): expose token parts in Text nodes ()
When it was tokenized, text content is split into parts that can include
interpolations and encoded entities tokens.

To make this information available to downstream processing, this commit
adds these tokens to the `Text` AST nodes, with suitable processing.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
942b24d5ea refactor(compiler): support encoded entity tokens when lexing markup ()
The lexer now splits encoded entity tokens out from text and attribute value tokens.

Previously encoded entities would be decoded and the decoded value would be
included as part of the text token of the surrounding text. Now the entities
have their own tokens. There are two scenarios: text and attribute values.

Previously the contents of `<div>Hello &amp; goodbye</div>` would be a single
TEXT token. Now it will be three tokens:

```
TEXT: "Hello "
ENCODED_ENTITY: "&", "&amp;"
TEXT: " goodbye"
```

Previously the attribute value in `<div title="Hello &amp; goodbye">` would be
a single text token. Now it will be three tokens:

```
ATTR_VALUE_TEXT: "Hello "
ENCODED_ENTITY: "&", "&amp;"
ATTR_VALUE_TEXT: " goodbye"
```

- ENCODED_ENTITY tokens have two parts: "decoded" and "encoded".
- ENCODED_ENTITY tokens are always preceded and followed by either TEXT tokens
  or ATTR_VALUE_TEXT tokens, depending upon the context, even if they represent
  an empty string.

The HTML parser has been modified to recombine these tokens to allow this
refactoring to have limited effect in this commit. Further refactorings
to use these new tokens will follow in subsequent commits.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
c516e252fc refactor(compiler): support interpolation tokens when lexing attribute values ()
The lexer now splits interpolation tokens out from attribute value tokens.
Previously the attribute value of `<div attr="Hello, {{ name}}">` would be a single
token. Now it will be three tokens:

```
ATTR_VALUE_TEXT: "Hello, "
ATTR_VALUE_INTERPOLATION: "{{", " name", "}}"
ATTR_VALUE_TEXT: ""
```

- ATTR_VALUE_INTERPOLATION tokens have three parts, "start marker",
  "expression" and "end marker".
- ATTR_VALUE_INTERPOLATION tokens are always preceded and followed
  by TEXT tokens, even if they represent an empty string.

The HTML parser has been modified to recombine these tokens to allow this
refactoring to have limited effect in this commit. Further refactorings
to use these new tokens will follow in subsequent commits.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
3d3b69ff81 refactor(compiler): share isQuote() via chars.ts ()
This function is general purpose and by moving it into the
`chars.ts` file along with similar helpers, it can be reused
in the lexer, for instance.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
c8a46bfdcd refactor(compiler): support interpolation tokens when lexing markup ()
The lexer now splits interpolation tokens out from text tokens.

Previously the contents of `<div>Hello, {{ name}}<div>` would be a single
text token. Now it will be three tokens:

```
TEXT: "Hello, "
INTERPOLATION: "{{", " name", "}}"
TEXT: ""
```

- INTERPOLATION tokens have three parts, "start marker", "expression"
  and "end marker".
- INTERPOLATION tokens are always preceded and followed by TEXT tokens,
  even if they represent an empty string.

The HTML parser has been modified to recombine these tokens to allow this
refactoring to have limited effect in this commit. Further refactorings
to use these new tokens will follow in subsequent commits.

PR Close 
2021-08-02 09:53:13 -07:00
Pete Bacon Darwin
75855196e3 refactor(compiler): remove cyclic dependencies ()
This commit removes 9 cycles in the dependency graph of the compiler code.

PR Close 
2021-08-02 09:53:12 -07:00
Pete Bacon Darwin
29f9888a98 test(compiler-cli): clarify source-map expectations in compliance tests ()
The compliance tests can check source-map segments against expectations
encoded into the expectation files. Previously, the encoding of the expected
segment was only delimited by whitespace, but this made it difficult to identify
segments that started or ended with whitespace.

Now these segment expectations are wrapped in double-quotes which makes
it easier to read and understand the expectation files.

PR Close 
2021-08-02 09:53:12 -07:00
Pete Bacon Darwin
42265cca1c refactor(ngcc): remove unused import ()
This import is not used in the file, so can be removed.

PR Close 
2021-08-02 09:53:12 -07:00
Alex Rickabaugh
0af354ce05 refactor(bazel): extract function to patch fileNameToModuleName on host ()
This commit extracts the patching operation that adds `fileNameToModuleName`
to the Angular compiler's `ts.CompilerHost` into a separate function, so
that it can be invoked in other compilation flows besides the one outlined
in `ngc-wrapped`. This is primarily needed for the xi18n operation in g3.

PR Close 
2021-07-30 09:29:42 -07:00
Alex Rickabaugh
d8183c94d4 refactor(compiler): remove unnecessary escapes ()
This commit is part of a larger scale change to eliminate unnecessary
escapes in string literals, in advance of enabling stricter checks in
`ts_library` rules in g3.

PR Close 
2021-07-30 09:28:46 -07:00
Renovate Bot
f31436da3c build: lock file maintenance ()
PR Close 
2021-07-30 09:27:01 -07:00
ivanwonder
7c35ca0e00 feat(language-service): support autocomplete string literal union types in templates ()
The native TS language service has the ability to provide autocompletions for
string literal union types. This pr is for Angular to do the same in templates.

Fixes https://github.com/angular/vscode-ng-language-service/issues/1096

PR Close 
2021-07-28 10:52:34 -07:00