@@ -1824,6 +1824,12 @@ fn diagnose_dependency(
1824
1824
DenoDiagnostic :: NoCache ( url) | DenoDiagnostic :: NoLocal ( url) => {
1825
1825
Some ( ( url. to_string ( ) , diag. to_lsp_diagnostic ( & range) ) )
1826
1826
}
1827
+ DenoDiagnostic :: ResolutionError (
1828
+ ResolutionError :: InvalidSpecifier {
1829
+ error : SpecifierError :: ImportPrefixMissing { specifier, .. } ,
1830
+ ..
1831
+ } ,
1832
+ ) => Some ( ( specifier. clone ( ) , diag. to_lsp_diagnostic ( & range) ) ) ,
1827
1833
_ => None ,
1828
1834
}
1829
1835
} ) ) ) ;
@@ -2013,12 +2019,11 @@ let c: number = "a";
2013
2019
. unwrap ( )
2014
2020
. 0 ;
2015
2021
assert_eq ! ( get_diagnostics_for_single( diagnostics) . len( ) , 4 ) ;
2016
- let diagnostics = generate_deno_diagnostics (
2022
+ let diagnostics = generate_all_deno_diagnostics (
2017
2023
& snapshot,
2018
2024
& enabled_config,
2019
2025
Default :: default ( ) ,
2020
- )
2021
- . 0 ;
2026
+ ) ;
2022
2027
assert_eq ! ( get_diagnostics_for_single( diagnostics) . len( ) , 1 ) ;
2023
2028
}
2024
2029
@@ -2049,12 +2054,11 @@ let c: number = "a";
2049
2054
. unwrap ( )
2050
2055
. 0 ;
2051
2056
assert_eq ! ( get_diagnostics_for_single( diagnostics) . len( ) , 0 ) ;
2052
- let diagnostics = generate_deno_diagnostics (
2057
+ let diagnostics = generate_all_deno_diagnostics (
2053
2058
& snapshot,
2054
2059
& disabled_config,
2055
2060
Default :: default ( ) ,
2056
- )
2057
- . 0 ;
2061
+ ) ;
2058
2062
assert_eq ! ( get_diagnostics_for_single( diagnostics) . len( ) , 0 ) ;
2059
2063
}
2060
2064
}
@@ -2074,6 +2078,37 @@ let c: number = "a";
2074
2078
. diagnostics
2075
2079
}
2076
2080
2081
+ fn generate_all_deno_diagnostics (
2082
+ snapshot : & StateSnapshot ,
2083
+ config : & Config ,
2084
+ token : CancellationToken ,
2085
+ ) -> DiagnosticVec {
2086
+ let ( diagnostics, deferred) =
2087
+ generate_deno_diagnostics ( snapshot, config, token) ;
2088
+
2089
+ let mut all_diagnostics = diagnostics
2090
+ . into_iter ( )
2091
+ . map ( |d| ( d. specifier . clone ( ) , d) )
2092
+ . collect :: < HashMap < _ , _ > > ( ) ;
2093
+ for diag in deferred {
2094
+ let existing = all_diagnostics
2095
+ . entry ( diag. document_specifier . clone ( ) )
2096
+ . or_insert_with ( || DiagnosticRecord {
2097
+ specifier : diag. document_specifier . clone ( ) ,
2098
+ versioned : VersionedDiagnostics {
2099
+ diagnostics : vec ! [ ] ,
2100
+ version : diag. version ,
2101
+ } ,
2102
+ } ) ;
2103
+ existing
2104
+ . versioned
2105
+ . diagnostics
2106
+ . extend ( diag. diagnostics . into_iter ( ) . map ( |( _, d) | d) ) ;
2107
+ assert_eq ! ( existing. versioned. version, diag. version) ;
2108
+ }
2109
+ all_diagnostics. into_values ( ) . collect ( )
2110
+ }
2111
+
2077
2112
#[ tokio:: test]
2078
2113
async fn test_deno_diagnostics_with_import_map ( ) {
2079
2114
let ( temp_dir, snapshot) = setup (
@@ -2103,7 +2138,7 @@ let c: number = "a";
2103
2138
. await ;
2104
2139
let config = mock_config ( ) ;
2105
2140
let token = CancellationToken :: new ( ) ;
2106
- let actual = generate_deno_diagnostics ( & snapshot, & config, token) . 0 ;
2141
+ let actual = generate_all_deno_diagnostics ( & snapshot, & config, token) ;
2107
2142
assert_eq ! ( actual. len( ) , 2 ) ;
2108
2143
for record in actual {
2109
2144
let relative_specifier =
@@ -2230,7 +2265,7 @@ let c: number = "a";
2230
2265
. await ;
2231
2266
let config = mock_config ( ) ;
2232
2267
let token = CancellationToken :: new ( ) ;
2233
- let actual = generate_deno_diagnostics ( & snapshot, & config, token) . 0 ;
2268
+ let actual = generate_all_deno_diagnostics ( & snapshot, & config, token) ;
2234
2269
assert_eq ! ( actual. len( ) , 1 ) ;
2235
2270
let record = actual. first ( ) . unwrap ( ) ;
2236
2271
assert_eq ! (
@@ -2304,7 +2339,7 @@ let c: number = "a";
2304
2339
. await ;
2305
2340
let config = mock_config ( ) ;
2306
2341
let token = CancellationToken :: new ( ) ;
2307
- let actual = generate_deno_diagnostics ( & snapshot, & config, token) . 0 ;
2342
+ let actual = generate_all_deno_diagnostics ( & snapshot, & config, token) ;
2308
2343
assert_eq ! ( actual. len( ) , 1 ) ;
2309
2344
let record = actual. first ( ) . unwrap ( ) ;
2310
2345
assert_eq ! (
0 commit comments