summaryrefslogtreecommitdiff
path: root/cli/tools/check.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-03-31 16:39:40 -0400
committerGitHub <noreply@github.com>2024-03-31 16:39:40 -0400
commitb8af46e0075f659f4e373e249b0f19b3cb0f62a9 (patch)
tree9a029e81b6d7d4294b729dc5db860b015368b1ba /cli/tools/check.rs
parent01445940449cedc571dcbd69caa7da58de007f2b (diff)
fix(check): ignore certain diagnostics in remote modules and when publishing (#23119)
Unused locals and parameters don't make sense to surface in remote modules. Additionally, fast check can cause these kind of diagnostics when publishing, so they should be ignored. Closes #22959
Diffstat (limited to 'cli/tools/check.rs')
-rw-r--r--cli/tools/check.rs43
1 files changed, 21 insertions, 22 deletions
diff --git a/cli/tools/check.rs b/cli/tools/check.rs
index ec4490017..87ec88a4a 100644
--- a/cli/tools/check.rs
+++ b/cli/tools/check.rs
@@ -200,28 +200,13 @@ impl TypeChecker {
check_mode: type_check_mode,
})?;
- let mut diagnostics = if type_check_mode == TypeCheckMode::Local {
- response.diagnostics.filter(|d| {
- if let Some(file_name) = &d.file_name {
- if !file_name.starts_with("http") {
- if ModuleSpecifier::parse(file_name)
- .map(|specifier| !self.node_resolver.in_npm_package(&specifier))
- .unwrap_or(true)
- {
- Some(d.clone())
- } else {
- None
- }
- } else {
- None
- }
- } else {
- Some(d.clone())
- }
- })
- } else {
- response.diagnostics
- };
+ let mut diagnostics = response.diagnostics.filter(|d| {
+ if self.is_remote_diagnostic(d) {
+ type_check_mode == TypeCheckMode::All && d.include_when_remote()
+ } else {
+ true
+ }
+ });
diagnostics.apply_fast_check_source_maps(&graph);
@@ -239,6 +224,20 @@ impl TypeChecker {
Ok((graph, diagnostics))
}
+
+ fn is_remote_diagnostic(&self, d: &tsc::Diagnostic) -> bool {
+ let Some(file_name) = &d.file_name else {
+ return false;
+ };
+ if file_name.starts_with("https://") || file_name.starts_with("http://") {
+ return true;
+ }
+ // check if in an npm package
+ let Ok(specifier) = ModuleSpecifier::parse(file_name) else {
+ return false;
+ };
+ self.node_resolver.in_npm_package(&specifier)
+ }
}
enum CheckHashResult {