angular-docs-cn/integration/language_service_plugin
Keen Yee Liau f6e88cd659 fix(language-service): Use ts.CompletionEntry for completions (#32375)
This is a prerequisite to fix a bug in template completions whereby
completion of the string `ti` for the variable `title` results in
`tititle`.

This is because the position where the completion is requested is used
to insert the completion text. This is incorrect. Instead, a
`replacementSpan` should be used to indicate the span of text that needs
to be replaced. Angular's own `Completion` interface is insufficient to
hold this information. Instead, we should just use ts.CompletionEntry.

Also added string enum for `CompletionKind`, which is similar to
ts.ScriptElementKind but contains more info about HTML entities.

PR Close #32375
2019-09-04 11:53:14 -07:00
..

Angular Language Service Test

This directory is an integration test for @angular/language-service to ensure that the language service works correctly as a tsserver plugin.

To use the tests:

  • Use yarn install to install all dependencies in this directory and in the Angular repo root directory.
  • From the Angular repo root directory, build Angular in the dist/packages-dist folder with ./scripts/build-packages-dist.sh.
  • In this directory, run the tests with yarn test.

Update golden files

If the expected output needs to be updated, run yarn golden my-golden.json, replacing my-golden.json with the golden file to be updated. Do not qualify the file with a directory path. See generate.ts for more information.

Adding a new fixture

Currently there is no automated way to produce a new fixture. The way the current fixtures were created was to hack a version of tsserver.js to write the commands from VSCode to a file while performing the operation to be tested. I also hand modified the input to remove superfluous request.

Once a new fixture is created:

  1. Add the fixture name to goldens/
  2. Run yarn golden my-golden.json, replacing my-golden.json with the new fixture name, to produce the expected output files.
  3. Hand validate that the expected output is reasonable.