This commit performs a modularization of the Language Service's existing diagnostic messages. Such a modularization has two primary advantages: - Centralization and decoupling of error messages from the code that generates them makes it easy to add/delete/edit diagnostic messages, and allows for independent iteration of diagnostic messages and diagnostic generation. - Prepares for additional features like annotating the locations where a diagnostic is generated and enabling the configuration of which diagnostics should be reported by the language service. Although it would be preferable to place the diagnostics registry in an independent JSON file, for ease of typing diagnostic types as an enum variant of 'ts.DiagnosticCategory', the registry is stored as an object. Part of #32663. PR Close #35678
146 lines
3.3 KiB
Python
146 lines
3.3 KiB
Python
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
|
|
load("//tools/circular_dependency_test:index.bzl", "circular_dependency_test")
|
|
|
|
circular_dependency_test(
|
|
name = "circular_deps_test",
|
|
entry_point = "angular/packages/language-service/index.js",
|
|
deps = ["//packages/language-service"],
|
|
)
|
|
|
|
ts_library(
|
|
name = "test_utils_lib",
|
|
testonly = True,
|
|
srcs = [
|
|
"test_utils.ts",
|
|
],
|
|
deps = [
|
|
"//packages/compiler",
|
|
"//packages/compiler-cli/test:test_utils",
|
|
"//packages/language-service",
|
|
"@npm//typescript",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "features_test_lib",
|
|
testonly = True,
|
|
srcs = [
|
|
"completions_spec.ts",
|
|
"definitions_spec.ts",
|
|
"diagnostics_spec.ts",
|
|
"hover_spec.ts",
|
|
],
|
|
data = glob(["project/**/*"]),
|
|
deps = [
|
|
":test_utils_lib",
|
|
"//packages/language-service",
|
|
"@npm//typescript",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "infra_test_lib",
|
|
testonly = True,
|
|
srcs = [
|
|
"diagnostic_messages_spec.ts",
|
|
"global_symbols_spec.ts",
|
|
"html_info_spec.ts",
|
|
"language_service_spec.ts",
|
|
"reflector_host_spec.ts",
|
|
"template_spec.ts",
|
|
"ts_plugin_spec.ts",
|
|
"typescript_host_spec.ts",
|
|
"utils_spec.ts",
|
|
],
|
|
data = glob(["project/**/*"]),
|
|
deps = [
|
|
":test_utils_lib",
|
|
"//packages/compiler",
|
|
"//packages/language-service",
|
|
"@npm//typescript",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "features_test",
|
|
data = [
|
|
"//packages/common:npm_package",
|
|
"//packages/core:npm_package",
|
|
"//packages/forms:npm_package",
|
|
],
|
|
tags = [
|
|
# the language service is not yet compatible with Ivy
|
|
"no-ivy-aot",
|
|
],
|
|
deps = [
|
|
":features_test_lib",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "infra_test",
|
|
data = [
|
|
"//packages/common:npm_package",
|
|
"//packages/core:npm_package",
|
|
"//packages/forms:npm_package",
|
|
],
|
|
tags = [
|
|
# the language service is not yet compatible with Ivy
|
|
"no-ivy-aot",
|
|
],
|
|
deps = [
|
|
":infra_test_lib",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "test",
|
|
data = [
|
|
"//packages/common:npm_package",
|
|
"//packages/core:npm_package",
|
|
"//packages/forms:npm_package",
|
|
],
|
|
tags = [
|
|
# the language service is not yet compatible with Ivy
|
|
"no-ivy-aot",
|
|
],
|
|
deps = [
|
|
":features_test_lib",
|
|
":infra_test_lib",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "diagnostics_lib",
|
|
testonly = True,
|
|
srcs = [
|
|
"expression_diagnostics_spec.ts",
|
|
"mocks.ts",
|
|
"typescript_symbols_spec.ts",
|
|
],
|
|
deps = [
|
|
"//packages/compiler",
|
|
"//packages/compiler-cli/test:test_utils",
|
|
"//packages/core",
|
|
"//packages/language-service",
|
|
"@npm//typescript",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "diagnostics",
|
|
data = [
|
|
"//packages/common:npm_package",
|
|
"//packages/core:npm_package",
|
|
"//packages/forms:npm_package",
|
|
],
|
|
tags = [
|
|
# Disabled as these tests pertain to diagnostics in the old ngc compiler. The Ivy ngtsc
|
|
# compiler has its own tests for diagnostics.
|
|
"no-ivy-aot",
|
|
],
|
|
deps = [
|
|
":diagnostics_lib",
|
|
],
|
|
)
|