typescript 4.7.0-dev.20220305 → 4.7.0-dev.20220308

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1539,6 +1539,7 @@
1539
1539
  "Type_catch_clause_variables_as_unknown_instead_of_any_6803": "Proměnné klauzule catch zapište jako „unknown“ namísto „any“.",
1540
1540
  "Type_declaration_files_to_be_included_in_compilation_6124": "Soubory deklarace typu, které se mají zahrnout do kompilace",
1541
1541
  "Type_expected_1110": "Očekával se typ.",
1542
+ "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456": "Kontrolní výrazy importu typů by měly mít přesně jeden klíč – resolution-mode – s hodnotou import nebo require.",
1542
1543
  "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589": "Vytvoření instance typu je příliš hluboké a může být nekonečné.",
1543
1544
  "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062": "Typ se přímo nebo nepřímo odkazuje ve zpětném volání jeho vlastní metody then při splnění.",
1544
1545
  "Type_library_referenced_via_0_from_file_1_1402": "Knihovna typů, na kterou se odkazuje přes {0} ze souboru {1}",
@@ -1781,6 +1782,8 @@
1781
1782
  "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024": "Modifikátor readonly se může objevit jenom v deklaraci vlastnosti nebo signatuře indexu.",
1782
1783
  "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354": "Modifikátor typu readonly se povoluje jen pro typy literálů pole a řazené kolekce členů.",
1783
1784
  "require_call_may_be_converted_to_an_import_80005": "Volání require se dá převést na import.",
1785
+ "resolution_mode_can_only_be_set_for_type_only_imports_1454": "resolution-mode se dá nastavit pouze pro importy type-only.",
1786
+ "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455": "resolution-mode je jediný platný klíč pro kontrolní výrazy importu typů.",
1784
1787
  "resolution_mode_should_be_either_require_or_import_1453": "resolution-mode by měl být buď require, nebo import.",
1785
1788
  "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107": "Je nastavená možnost rootDirs, použije se k překladu relativního názvu modulu {0}.",
1786
1789
  "super_can_only_be_referenced_in_a_derived_class_2335": "Na vlastnost super se dá odkazovat jenom v odvozené třídě.",
@@ -1539,6 +1539,7 @@
1539
1539
  "Type_catch_clause_variables_as_unknown_instead_of_any_6803": "Escriba las variables de la cláusula catch como 'unknown' en lugar de 'any'.",
1540
1540
  "Type_declaration_files_to_be_included_in_compilation_6124": "Archivos de declaración de tipos que se incluirán en la compilación.",
1541
1541
  "Type_expected_1110": "Se esperaba un tipo.",
1542
+ "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456": "Las aserciones de importación de tipos deben tener exactamente una clave - \"resolution-mode\" - con el valor \"import\" o \"require\".",
1542
1543
  "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589": "La creación de una instancia de tipo es excesivamente profunda y posiblemente infinita.",
1543
1544
  "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062": "Se hace referencia al tipo directa o indirectamente en la devolución de llamada de entrega de su propio método \"then\".",
1544
1545
  "Type_library_referenced_via_0_from_file_1_1402": "Biblioteca de tipos a la que se hace referencia mediante \"{0}\" desde el archivo \"{1}\"",
@@ -1781,6 +1782,8 @@
1781
1782
  "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024": "El modificador 'readonly' solo puede aparecer en una declaración de propiedad o una signatura de índice.",
1782
1783
  "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354": "El modificador de tipo \"readonly\" solo se permite en los tipos literales de matriz y de tupla.",
1783
1784
  "require_call_may_be_converted_to_an_import_80005": "La llamada a \"require\" puede convertirse en una importación.",
1785
+ "resolution_mode_can_only_be_set_for_type_only_imports_1454": "\"resolution-mode\" solo se puede establecer para importaciones solamente de tipo.",
1786
+ "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455": "\"resolution-mode\" es la única clave válida para las aserciones de importación de tipos.",
1784
1787
  "resolution_mode_should_be_either_require_or_import_1453": "\"modo de resolución\" debe ser \"requerir\" o \"importar\".",
1785
1788
  "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107": "Se ha establecido la opción \"rootDirs\". Se usará para resolver el nombre de módulo relativo \"{0}\".",
1786
1789
  "super_can_only_be_referenced_in_a_derived_class_2335": "Solo se puede hacer referencia a \"super\" en una clase derivada.",
@@ -1539,6 +1539,7 @@
1539
1539
  "Type_catch_clause_variables_as_unknown_instead_of_any_6803": "Digitare le variabili di clausola catch come \"unknown\" invece di \"any\".",
1540
1540
  "Type_declaration_files_to_be_included_in_compilation_6124": "File della dichiarazione di tipo da includere nella compilazione.",
1541
1541
  "Type_expected_1110": "È previsto il tipo.",
1542
+ "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456": "L’importazione dei tipi di asserzione deve contenere esattamente una chiave, 'resolution-mode', con valore 'import' o 'require'.",
1542
1543
  "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589": "La creazione di un'istanza di tipo presenta troppi livelli ed è probabilmente infinita.",
1543
1544
  "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062": "Il tipo viene usato come riferimento diretto o indiretto nel callback di fulfillment del relativo metodo 'then'.",
1544
1545
  "Type_library_referenced_via_0_from_file_1_1402": "Libreria dei tipi a cui viene fatto riferimento tramite '{0}' dal file '{1}'",
@@ -1781,6 +1782,8 @@
1781
1782
  "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024": "Il modificatore 'readonly' può essere incluso solo in una dichiarazione di proprietà o una firma dell'indice.",
1782
1783
  "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354": "Il modificatore di tipo 'readonly' è consentito solo in tipi di valore letterale matrice e tupla.",
1783
1784
  "require_call_may_be_converted_to_an_import_80005": "La chiamata a 'require' può essere convertita in un'importazione.",
1785
+ "resolution_mode_can_only_be_set_for_type_only_imports_1454": "'resolution-mode' può essere impostata solo per le importazioni di tipo.",
1786
+ "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455": "'resolution-mode' è l'unica chiave valida per l’importazione dei tipi di asserzioni.",
1784
1787
  "resolution_mode_should_be_either_require_or_import_1453": "'resolution-mode' deve essere 'require' o 'import'.",
1785
1788
  "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107": "L'opzione 'rootDirs' è impostata e verrà usata per risolvere il nome del modulo relativo '{0}'.",
1786
1789
  "super_can_only_be_referenced_in_a_derived_class_2335": "È possibile fare riferimento a 'super' solo in una classe derivata.",
@@ -1539,6 +1539,7 @@
1539
1539
  "Type_catch_clause_variables_as_unknown_instead_of_any_6803": "Wpisz zmienne klauzuli catch jako \"unknown\" zamiast \"any\".",
1540
1540
  "Type_declaration_files_to_be_included_in_compilation_6124": "Pliki deklaracji typu do uwzględnienia w kompilacji.",
1541
1541
  "Type_expected_1110": "Oczekiwano typu.",
1542
+ "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456": "Twierdzenie importu typu powinno mieć dokładnie jeden klucz – „resolution-mode“ – z wartością „importuj“ lub „wymagaj“.",
1542
1543
  "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589": "Tworzenie wystąpienia typu jest nadmiernie szczegółowe i prawdopodobnie nieskończone.",
1543
1544
  "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062": "Typ jest przywoływany bezpośrednio lub pośrednio w wywołaniu zwrotnym realizacji jego własnej metody „then”.",
1544
1545
  "Type_library_referenced_via_0_from_file_1_1402": "Biblioteka typów jest przywoływana za pośrednictwem elementu „{0}” z pliku „{1}”",
@@ -1781,6 +1782,8 @@
1781
1782
  "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024": "Modyfikator „readonly” może występować jedynie w deklaracji właściwości lub sygnaturze indeksu.",
1782
1783
  "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354": "Modyfikator typu „readonly” jest dozwolony tylko w typach literału tablicy i krotki.",
1783
1784
  "require_call_may_be_converted_to_an_import_80005": "Wywołanie „require” może zostać przekonwertowane na wywołanie import.",
1785
+ "resolution_mode_can_only_be_set_for_type_only_imports_1454": "Element „resolution-mode“ można ustawić wyłącznie dla importów tylko typów.",
1786
+ "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455": "Element „resolution-mode“ jest jedynym prawidłowym kluczem dla twierdzenia importu typu.",
1784
1787
  "resolution_mode_should_be_either_require_or_import_1453": "Element „resolution-mode” powinien mieć wartość „require” lub „import”.",
1785
1788
  "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107": "Opcja „rootDirs” została ustawiona. Zostanie ona użyta do rozpoznania względnej nazwy modułu „{0}”.",
1786
1789
  "super_can_only_be_referenced_in_a_derived_class_2335": "Element „super” może być przywoływany tylko w klasie pochodnej.",
@@ -1539,6 +1539,7 @@
1539
1539
  "Type_catch_clause_variables_as_unknown_instead_of_any_6803": "Catch yan tümcesi değişkenlerini 'any' yerine 'unknown' olarak yazın.",
1540
1540
  "Type_declaration_files_to_be_included_in_compilation_6124": "Derlemeye eklenecek tür bildirim dosyaları.",
1541
1541
  "Type_expected_1110": "Tür bekleniyor.",
1542
+ "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456": "Tür içe aktarma iddiaları, `import` veya `require`. değerine sahip tam olarak bir anahtara - `resolution-mode`’na sahip olmalıdır.",
1542
1543
  "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589": "Tür örneği oluşturma işlemi, fazla ayrıntılı ve büyük olasılıkla sınırsız.",
1543
1544
  "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062": "Türe, kendi 'then' metodunun tamamlama geri aramasında doğrudan veya dolaylı olarak başvuruluyor.",
1544
1545
  "Type_library_referenced_via_0_from_file_1_1402": "'{1}' dosyasından '{0}' aracılığıyla başvurulan tür kitaplığı",
@@ -1781,6 +1782,8 @@
1781
1782
  "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024": "'readonly' değiştiricisi yalnızca özellik bildiriminde ya da dizin imzasında görünebilir.",
1782
1783
  "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354": "'readonly' tür değiştiricisine yalnızca dizide ve demet sabit değeri türlerinde izin verilir.",
1783
1784
  "require_call_may_be_converted_to_an_import_80005": "'require' çağrısı bir import olarak dönüştürülebilir.",
1785
+ "resolution_mode_can_only_be_set_for_type_only_imports_1454": "`resolution-mode` yalnızca tür içeri aktarmaları için ayarlanabilir.",
1786
+ "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455": "`resolution-mode`, tür içe aktarma iddiaları için tek geçerli anahtardır.",
1784
1787
  "resolution_mode_should_be_either_require_or_import_1453": "`resolution-mode`, `require` ya da `import` olmalıdır.",
1785
1788
  "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107": "'rootDirs' seçeneği ayarlandı, '{0}' göreli modül adını çözümlemek için bu değer kullanılıyor.",
1786
1789
  "super_can_only_be_referenced_in_a_derived_class_2335": "'super' öğesine yalnızca bir türetilmiş sınıfta başvurulabilir.",
package/lib/tsc.js CHANGED
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.7";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -11330,7 +11330,7 @@ var ts;
11330
11330
  return name.kind === 161 && !isStringOrNumericLiteralLike(name.expression);
11331
11331
  }
11332
11332
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
11333
- function getTextOfPropertyName(name) {
11333
+ function tryGetTextOfPropertyName(name) {
11334
11334
  switch (name.kind) {
11335
11335
  case 79:
11336
11336
  case 80:
@@ -11342,11 +11342,15 @@ var ts;
11342
11342
  case 161:
11343
11343
  if (isStringOrNumericLiteralLike(name.expression))
11344
11344
  return ts.escapeLeadingUnderscores(name.expression.text);
11345
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
11345
+ return undefined;
11346
11346
  default:
11347
11347
  return ts.Debug.assertNever(name);
11348
11348
  }
11349
11349
  }
11350
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
11351
+ function getTextOfPropertyName(name) {
11352
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
11353
+ }
11350
11354
  ts.getTextOfPropertyName = getTextOfPropertyName;
11351
11355
  function entityNameToString(name) {
11352
11356
  switch (name.kind) {
@@ -11863,7 +11867,7 @@ var ts;
11863
11867
  function getPropertyAssignment(objectLiteral, key, key2) {
11864
11868
  return objectLiteral.properties.filter(function (property) {
11865
11869
  if (property.kind === 295) {
11866
- var propName = getTextOfPropertyName(property.name);
11870
+ var propName = tryGetTextOfPropertyName(property.name);
11867
11871
  return key === propName || (!!key2 && key2 === propName);
11868
11872
  }
11869
11873
  return false;
package/lib/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -14833,7 +14833,7 @@ var ts;
14833
14833
  return name.kind === 161 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression);
14834
14834
  }
14835
14835
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
14836
- function getTextOfPropertyName(name) {
14836
+ function tryGetTextOfPropertyName(name) {
14837
14837
  switch (name.kind) {
14838
14838
  case 79 /* Identifier */:
14839
14839
  case 80 /* PrivateIdentifier */:
@@ -14845,11 +14845,15 @@ var ts;
14845
14845
  case 161 /* ComputedPropertyName */:
14846
14846
  if (isStringOrNumericLiteralLike(name.expression))
14847
14847
  return ts.escapeLeadingUnderscores(name.expression.text);
14848
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
14848
+ return undefined;
14849
14849
  default:
14850
14850
  return ts.Debug.assertNever(name);
14851
14851
  }
14852
14852
  }
14853
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
14854
+ function getTextOfPropertyName(name) {
14855
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
14856
+ }
14853
14857
  ts.getTextOfPropertyName = getTextOfPropertyName;
14854
14858
  function entityNameToString(name) {
14855
14859
  switch (name.kind) {
@@ -15401,7 +15405,7 @@ var ts;
15401
15405
  function getPropertyAssignment(objectLiteral, key, key2) {
15402
15406
  return objectLiteral.properties.filter(function (property) {
15403
15407
  if (property.kind === 295 /* PropertyAssignment */) {
15404
- var propName = getTextOfPropertyName(property.name);
15408
+ var propName = tryGetTextOfPropertyName(property.name);
15405
15409
  return key === propName || (!!key2 && key2 === propName);
15406
15410
  }
15407
15411
  return false;
@@ -172425,47 +172429,18 @@ var ts;
172425
172429
  }
172426
172430
  return ts.deduplicate(outputs, ts.equateValues);
172427
172431
  }
172428
- function combineOutputResultContains(outputs, output, areEqual) {
172429
- return outputs.some(function (_a) {
172430
- var result = _a.result;
172431
- return ts.contains(result, output, areEqual);
172432
- });
172433
- }
172434
- function addToCombineOutputResult(outputs, project, result) {
172435
- if (result.length)
172436
- outputs.push({ project: project, result: result });
172437
- }
172438
- function combineProjectOutputFromEveryProject(projectService, action, areEqual) {
172439
- var outputs = [];
172440
- projectService.loadAncestorProjectTree();
172441
- projectService.forEachEnabledProject(function (project) {
172442
- var theseOutputs = action(project);
172443
- addToCombineOutputResult(outputs, project, ts.filter(theseOutputs, function (output) { return !combineOutputResultContains(outputs, output, areEqual); }));
172444
- });
172445
- return outputs;
172446
- }
172447
- function flattenCombineOutputResult(outputs) {
172448
- return ts.flatMap(outputs, function (_a) {
172449
- var result = _a.result;
172450
- return result;
172451
- });
172452
- }
172453
- function combineProjectOutputWhileOpeningReferencedProjects(projects, defaultProject, action, getLocation, resultsEqual) {
172454
- var outputs = [];
172455
- combineProjectOutputWorker(projects, defaultProject,
172456
- /*initialLocation*/ undefined, function (project, _, tryAddToTodo) {
172457
- var theseOutputs = action(project);
172458
- addToCombineOutputResult(outputs, project, ts.filter(theseOutputs, function (output) { return !combineOutputResultContains(outputs, output, resultsEqual) && !tryAddToTodo(project, getLocation(output)); }));
172459
- });
172460
- return outputs;
172461
- }
172462
- function combineProjectOutputForRenameLocations(projects, defaultProject, initialLocation, findInStrings, findInComments, hostPreferences) {
172432
+ ;
172433
+ function combineProjectOutputForRenameLocations(projects, defaultProject, initialLocation, findInStrings, findInComments, _a) {
172434
+ var providePrefixAndSuffixTextForRename = _a.providePrefixAndSuffixTextForRename;
172463
172435
  var outputs = [];
172464
172436
  combineProjectOutputWorker(projects, defaultProject, initialLocation, function (project, location, tryAddToTodo) {
172465
- for (var _i = 0, _a = project.getLanguageService().findRenameLocations(location.fileName, location.pos, findInStrings, findInComments, hostPreferences.providePrefixAndSuffixTextForRename) || server.emptyArray; _i < _a.length; _i++) {
172466
- var output = _a[_i];
172467
- if (!ts.contains(outputs, output, ts.documentSpansEqual) && !tryAddToTodo(project, documentSpanLocation(output))) {
172468
- outputs.push(output);
172437
+ var projectOutputs = project.getLanguageService().findRenameLocations(location.fileName, location.pos, findInStrings, findInComments, providePrefixAndSuffixTextForRename);
172438
+ if (projectOutputs) {
172439
+ for (var _i = 0, projectOutputs_1 = projectOutputs; _i < projectOutputs_1.length; _i++) {
172440
+ var output = projectOutputs_1[_i];
172441
+ if (!ts.contains(outputs, output, ts.documentSpansEqual) && !tryAddToTodo(project, documentSpanLocation(output))) {
172442
+ outputs.push(output);
172443
+ }
172469
172444
  }
172470
172445
  }
172471
172446
  });
@@ -172480,43 +172455,33 @@ var ts;
172480
172455
  var outputs = [];
172481
172456
  combineProjectOutputWorker(projects, defaultProject, initialLocation, function (project, location, getMappedLocation) {
172482
172457
  logger.info("Finding references to " + location.fileName + " position " + location.pos + " in project " + project.getProjectName());
172483
- var _loop_8 = function (outputReferencedSymbol) {
172484
- var mappedDefinitionFile = getMappedLocation(project, documentSpanLocation(outputReferencedSymbol.definition));
172485
- var definition = mappedDefinitionFile === undefined ?
172486
- outputReferencedSymbol.definition : __assign(__assign({}, outputReferencedSymbol.definition), { textSpan: ts.createTextSpan(mappedDefinitionFile.pos, outputReferencedSymbol.definition.textSpan.length), fileName: mappedDefinitionFile.fileName, contextSpan: getMappedContextSpan(outputReferencedSymbol.definition, project) });
172487
- var symbolToAddTo = ts.find(outputs, function (o) { return ts.documentSpansEqual(o.definition, definition); });
172488
- if (!symbolToAddTo) {
172489
- symbolToAddTo = { definition: definition, references: [] };
172490
- outputs.push(symbolToAddTo);
172491
- }
172492
- for (var _b = 0, _c = outputReferencedSymbol.references; _b < _c.length; _b++) {
172493
- var ref = _c[_b];
172494
- // If it's in a mapped file, that is added to the todo list by `getMappedLocation`.
172495
- if (!ts.contains(symbolToAddTo.references, ref, ts.documentSpansEqual) && !getMappedLocation(project, documentSpanLocation(ref))) {
172496
- symbolToAddTo.references.push(ref);
172458
+ var projectOutputs = project.getLanguageService().findReferences(location.fileName, location.pos);
172459
+ if (projectOutputs) {
172460
+ var _loop_8 = function (referencedSymbol) {
172461
+ var mappedDefinitionFile = getMappedLocation(project, documentSpanLocation(referencedSymbol.definition));
172462
+ var definition = mappedDefinitionFile === undefined ?
172463
+ referencedSymbol.definition : __assign(__assign({}, referencedSymbol.definition), { textSpan: ts.createTextSpan(mappedDefinitionFile.pos, referencedSymbol.definition.textSpan.length), fileName: mappedDefinitionFile.fileName, contextSpan: getMappedContextSpan(referencedSymbol.definition, project) });
172464
+ var symbolToAddTo = ts.find(outputs, function (o) { return ts.documentSpansEqual(o.definition, definition); });
172465
+ if (!symbolToAddTo) {
172466
+ symbolToAddTo = { definition: definition, references: [] };
172467
+ outputs.push(symbolToAddTo);
172468
+ }
172469
+ for (var _a = 0, _b = referencedSymbol.references; _a < _b.length; _a++) {
172470
+ var ref = _b[_a];
172471
+ // If it's in a mapped file, that is added to the todo list by `getMappedLocation`.
172472
+ if (!ts.contains(symbolToAddTo.references, ref, ts.documentSpansEqual) && !getMappedLocation(project, documentSpanLocation(ref))) {
172473
+ symbolToAddTo.references.push(ref);
172474
+ }
172497
172475
  }
172476
+ };
172477
+ for (var _i = 0, projectOutputs_2 = projectOutputs; _i < projectOutputs_2.length; _i++) {
172478
+ var referencedSymbol = projectOutputs_2[_i];
172479
+ _loop_8(referencedSymbol);
172498
172480
  }
172499
- };
172500
- for (var _i = 0, _a = project.getLanguageService().findReferences(location.fileName, location.pos) || server.emptyArray; _i < _a.length; _i++) {
172501
- var outputReferencedSymbol = _a[_i];
172502
- _loop_8(outputReferencedSymbol);
172503
172481
  }
172504
172482
  });
172505
172483
  return outputs.filter(function (o) { return o.references.length !== 0; });
172506
172484
  }
172507
- function combineProjectOutputForFileReferences(projects, defaultProject, fileName) {
172508
- var outputs = [];
172509
- combineProjectOutputWorker(projects, defaultProject,
172510
- /*initialLocation*/ undefined, function (project) {
172511
- for (var _i = 0, _a = project.getLanguageService().getFileReferences(fileName) || server.emptyArray; _i < _a.length; _i++) {
172512
- var referenceEntry = _a[_i];
172513
- if (!ts.contains(outputs, referenceEntry, ts.documentSpansEqual)) {
172514
- outputs.push(referenceEntry);
172515
- }
172516
- }
172517
- });
172518
- return outputs;
172519
- }
172520
172485
  function forEachProjectInProjects(projects, path, cb) {
172521
172486
  for (var _i = 0, _a = ts.isArray(projects) ? projects : projects.projects; _i < _a.length; _i++) {
172522
172487
  var project = _a[_i];
@@ -173855,7 +173820,21 @@ var ts;
173855
173820
  Session.prototype.getFileReferences = function (args, simplifiedResult) {
173856
173821
  var _this = this;
173857
173822
  var projects = this.getProjects(args);
173858
- var references = combineProjectOutputForFileReferences(projects, this.getDefaultProject(args), args.file);
173823
+ var fileName = args.file;
173824
+ var references = [];
173825
+ forEachProjectInProjects(projects, /*path*/ undefined, function (project) {
173826
+ if (project.getCancellationToken().isCancellationRequested())
173827
+ return;
173828
+ var projectOutputs = project.getLanguageService().getFileReferences(fileName);
173829
+ if (projectOutputs) {
173830
+ for (var _i = 0, projectOutputs_3 = projectOutputs; _i < projectOutputs_3.length; _i++) {
173831
+ var referenceEntry = projectOutputs_3[_i];
173832
+ if (!ts.contains(references, referenceEntry, ts.documentSpansEqual)) {
173833
+ references.push(referenceEntry);
173834
+ }
173835
+ }
173836
+ }
173837
+ });
173859
173838
  if (!simplifiedResult)
173860
173839
  return references;
173861
173840
  var refs = references.map(function (entry) { return referenceEntryToReferencesResponseItem(_this.projectService, entry); });
@@ -174254,10 +174233,13 @@ var ts;
174254
174233
  Session.prototype.getNavigateToItems = function (args, simplifiedResult) {
174255
174234
  var full = this.getFullNavigateToItems(args);
174256
174235
  return !simplifiedResult ?
174257
- flattenCombineOutputResult(full) :
174258
174236
  ts.flatMap(full, function (_a) {
174259
- var project = _a.project, result = _a.result;
174260
- return result.map(function (navItem) {
174237
+ var navigateToItems = _a.navigateToItems;
174238
+ return navigateToItems;
174239
+ }) :
174240
+ ts.flatMap(full, function (_a) {
174241
+ var project = _a.project, navigateToItems = _a.navigateToItems;
174242
+ return navigateToItems.map(function (navItem) {
174261
174243
  var scriptInfo = project.getScriptInfo(navItem.fileName);
174262
174244
  var bakedItem = {
174263
174245
  name: navItem.name,
@@ -174287,13 +174269,57 @@ var ts;
174287
174269
  if (currentFileOnly) {
174288
174270
  ts.Debug.assertIsDefined(args.file);
174289
174271
  var _a = this.getFileAndProject(args), file = _a.file, project = _a.project;
174290
- return [{ project: project, result: project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, file) }];
174272
+ return [{ project: project, navigateToItems: project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, file) }];
174273
+ }
174274
+ var outputs = [];
174275
+ // This is effectively a hashset with `name` as the custom hash and `navigateToItemIsEqualTo` as the custom equals.
174276
+ // `name` is a very cheap hash function, but we could incorporate other properties to reduce collisions.
174277
+ var seenItems = new ts.Map(); // name to items with that name
174278
+ if (!args.file && !projectFileName) {
174279
+ // VS Code's `Go to symbol in workspaces` sends request like this
174280
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174281
+ // This appears to have been intended to search all projects but, in practice, it seems to only search
174282
+ // those that are downstream from already-loaded projects.
174283
+ // Filtering by !isSourceOfProjectReferenceRedirect is new, but seems appropriate and consistent with
174284
+ // the case below.
174285
+ this.projectService.loadAncestorProjectTree();
174286
+ this.projectService.forEachEnabledProject(function (project) { return addItemsForProject(project); });
174291
174287
  }
174292
- else if (!args.file && !projectFileName) {
174293
- return combineProjectOutputFromEveryProject(this.projectService, function (project) { return project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*filename*/ undefined, /*excludeDts*/ project.isNonTsProject()); }, navigateToItemIsEqualTo);
174288
+ else {
174289
+ // VS's `Go to symbol` sends requests with just a project and doesn't want cascading since it will
174290
+ // send a separate request for each project of interest
174291
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174292
+ // This doesn't really make sense unless it's a single project matching `projectFileName`
174293
+ var projects = this.getProjects(args);
174294
+ forEachProjectInProjects(projects, /*path*/ undefined, function (project) { return addItemsForProject(project); });
174295
+ }
174296
+ return outputs;
174297
+ // Mutates `outputs`
174298
+ function addItemsForProject(project) {
174299
+ var projectItems = project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*filename*/ undefined, /*excludeDts*/ project.isNonTsProject());
174300
+ var unseenItems = ts.filter(projectItems, function (item) { return tryAddSeenItem(item) && !getMappedLocation(documentSpanLocation(item), project); });
174301
+ if (unseenItems.length) {
174302
+ outputs.push({ project: project, navigateToItems: unseenItems });
174303
+ }
174304
+ }
174305
+ // Returns true if the item had not been seen before
174306
+ // Mutates `seenItems`
174307
+ function tryAddSeenItem(item) {
174308
+ var name = item.name;
174309
+ if (!seenItems.has(name)) {
174310
+ seenItems.set(name, [item]);
174311
+ return true;
174312
+ }
174313
+ var seen = seenItems.get(name);
174314
+ for (var _i = 0, seen_1 = seen; _i < seen_1.length; _i++) {
174315
+ var seenItem = seen_1[_i];
174316
+ if (navigateToItemIsEqualTo(seenItem, item)) {
174317
+ return false;
174318
+ }
174319
+ }
174320
+ seen.push(item);
174321
+ return true;
174294
174322
  }
174295
- var fileArgs = args;
174296
- return combineProjectOutputWhileOpeningReferencedProjects(this.getProjects(fileArgs), this.getDefaultProject(fileArgs), function (project) { return project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*fileName*/ undefined, /*excludeDts*/ project.isNonTsProject()); }, documentSpanLocation, navigateToItemIsEqualTo);
174297
174323
  function navigateToItemIsEqualTo(a, b) {
174298
174324
  if (a === b) {
174299
174325
  return true;
@@ -174385,8 +174411,28 @@ var ts;
174385
174411
  var newPath = server.toNormalizedPath(args.newFilePath);
174386
174412
  var formatOptions = this.getHostFormatOptions();
174387
174413
  var preferences = this.getHostPreferences();
174388
- var changes = flattenCombineOutputResult(combineProjectOutputFromEveryProject(this.projectService, function (project) { return project.getLanguageService().getEditsForFileRename(oldPath, newPath, formatOptions, preferences); }, function (a, b) { return a.fileName === b.fileName; }));
174389
- return simplifiedResult ? changes.map(function (c) { return _this.mapTextChangeToCodeEdit(c); }) : changes;
174414
+ var seenFiles = new ts.Set();
174415
+ var textChanges = [];
174416
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174417
+ // This appears to have been intended to search all projects but, in practice, it seems to only search
174418
+ // those that are downstream from already-loaded projects.
174419
+ this.projectService.loadAncestorProjectTree();
174420
+ this.projectService.forEachEnabledProject(function (project) {
174421
+ var projectTextChanges = project.getLanguageService().getEditsForFileRename(oldPath, newPath, formatOptions, preferences);
174422
+ var projectFiles = [];
174423
+ for (var _i = 0, projectTextChanges_1 = projectTextChanges; _i < projectTextChanges_1.length; _i++) {
174424
+ var textChange = projectTextChanges_1[_i];
174425
+ if (!seenFiles.has(textChange.fileName)) {
174426
+ textChanges.push(textChange);
174427
+ projectFiles.push(textChange.fileName);
174428
+ }
174429
+ }
174430
+ for (var _a = 0, projectFiles_1 = projectFiles; _a < projectFiles_1.length; _a++) {
174431
+ var file = projectFiles_1[_a];
174432
+ seenFiles.add(file);
174433
+ }
174434
+ });
174435
+ return simplifiedResult ? textChanges.map(function (c) { return _this.mapTextChangeToCodeEdit(c); }) : textChanges;
174390
174436
  };
174391
174437
  Session.prototype.getCodeFixes = function (args, simplifiedResult) {
174392
174438
  var _this = this;
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -15027,7 +15027,7 @@ var ts;
15027
15027
  return name.kind === 161 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression);
15028
15028
  }
15029
15029
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
15030
- function getTextOfPropertyName(name) {
15030
+ function tryGetTextOfPropertyName(name) {
15031
15031
  switch (name.kind) {
15032
15032
  case 79 /* Identifier */:
15033
15033
  case 80 /* PrivateIdentifier */:
@@ -15039,11 +15039,15 @@ var ts;
15039
15039
  case 161 /* ComputedPropertyName */:
15040
15040
  if (isStringOrNumericLiteralLike(name.expression))
15041
15041
  return ts.escapeLeadingUnderscores(name.expression.text);
15042
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
15042
+ return undefined;
15043
15043
  default:
15044
15044
  return ts.Debug.assertNever(name);
15045
15045
  }
15046
15046
  }
15047
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
15048
+ function getTextOfPropertyName(name) {
15049
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
15050
+ }
15047
15051
  ts.getTextOfPropertyName = getTextOfPropertyName;
15048
15052
  function entityNameToString(name) {
15049
15053
  switch (name.kind) {
@@ -15595,7 +15599,7 @@ var ts;
15595
15599
  function getPropertyAssignment(objectLiteral, key, key2) {
15596
15600
  return objectLiteral.properties.filter(function (property) {
15597
15601
  if (property.kind === 295 /* PropertyAssignment */) {
15598
- var propName = getTextOfPropertyName(property.name);
15602
+ var propName = tryGetTextOfPropertyName(property.name);
15599
15603
  return key === propName || (!!key2 && key2 === propName);
15600
15604
  }
15601
15605
  return false;
@@ -172619,47 +172623,18 @@ var ts;
172619
172623
  }
172620
172624
  return ts.deduplicate(outputs, ts.equateValues);
172621
172625
  }
172622
- function combineOutputResultContains(outputs, output, areEqual) {
172623
- return outputs.some(function (_a) {
172624
- var result = _a.result;
172625
- return ts.contains(result, output, areEqual);
172626
- });
172627
- }
172628
- function addToCombineOutputResult(outputs, project, result) {
172629
- if (result.length)
172630
- outputs.push({ project: project, result: result });
172631
- }
172632
- function combineProjectOutputFromEveryProject(projectService, action, areEqual) {
172633
- var outputs = [];
172634
- projectService.loadAncestorProjectTree();
172635
- projectService.forEachEnabledProject(function (project) {
172636
- var theseOutputs = action(project);
172637
- addToCombineOutputResult(outputs, project, ts.filter(theseOutputs, function (output) { return !combineOutputResultContains(outputs, output, areEqual); }));
172638
- });
172639
- return outputs;
172640
- }
172641
- function flattenCombineOutputResult(outputs) {
172642
- return ts.flatMap(outputs, function (_a) {
172643
- var result = _a.result;
172644
- return result;
172645
- });
172646
- }
172647
- function combineProjectOutputWhileOpeningReferencedProjects(projects, defaultProject, action, getLocation, resultsEqual) {
172648
- var outputs = [];
172649
- combineProjectOutputWorker(projects, defaultProject,
172650
- /*initialLocation*/ undefined, function (project, _, tryAddToTodo) {
172651
- var theseOutputs = action(project);
172652
- addToCombineOutputResult(outputs, project, ts.filter(theseOutputs, function (output) { return !combineOutputResultContains(outputs, output, resultsEqual) && !tryAddToTodo(project, getLocation(output)); }));
172653
- });
172654
- return outputs;
172655
- }
172656
- function combineProjectOutputForRenameLocations(projects, defaultProject, initialLocation, findInStrings, findInComments, hostPreferences) {
172626
+ ;
172627
+ function combineProjectOutputForRenameLocations(projects, defaultProject, initialLocation, findInStrings, findInComments, _a) {
172628
+ var providePrefixAndSuffixTextForRename = _a.providePrefixAndSuffixTextForRename;
172657
172629
  var outputs = [];
172658
172630
  combineProjectOutputWorker(projects, defaultProject, initialLocation, function (project, location, tryAddToTodo) {
172659
- for (var _i = 0, _a = project.getLanguageService().findRenameLocations(location.fileName, location.pos, findInStrings, findInComments, hostPreferences.providePrefixAndSuffixTextForRename) || server.emptyArray; _i < _a.length; _i++) {
172660
- var output = _a[_i];
172661
- if (!ts.contains(outputs, output, ts.documentSpansEqual) && !tryAddToTodo(project, documentSpanLocation(output))) {
172662
- outputs.push(output);
172631
+ var projectOutputs = project.getLanguageService().findRenameLocations(location.fileName, location.pos, findInStrings, findInComments, providePrefixAndSuffixTextForRename);
172632
+ if (projectOutputs) {
172633
+ for (var _i = 0, projectOutputs_1 = projectOutputs; _i < projectOutputs_1.length; _i++) {
172634
+ var output = projectOutputs_1[_i];
172635
+ if (!ts.contains(outputs, output, ts.documentSpansEqual) && !tryAddToTodo(project, documentSpanLocation(output))) {
172636
+ outputs.push(output);
172637
+ }
172663
172638
  }
172664
172639
  }
172665
172640
  });
@@ -172674,43 +172649,33 @@ var ts;
172674
172649
  var outputs = [];
172675
172650
  combineProjectOutputWorker(projects, defaultProject, initialLocation, function (project, location, getMappedLocation) {
172676
172651
  logger.info("Finding references to " + location.fileName + " position " + location.pos + " in project " + project.getProjectName());
172677
- var _loop_8 = function (outputReferencedSymbol) {
172678
- var mappedDefinitionFile = getMappedLocation(project, documentSpanLocation(outputReferencedSymbol.definition));
172679
- var definition = mappedDefinitionFile === undefined ?
172680
- outputReferencedSymbol.definition : __assign(__assign({}, outputReferencedSymbol.definition), { textSpan: ts.createTextSpan(mappedDefinitionFile.pos, outputReferencedSymbol.definition.textSpan.length), fileName: mappedDefinitionFile.fileName, contextSpan: getMappedContextSpan(outputReferencedSymbol.definition, project) });
172681
- var symbolToAddTo = ts.find(outputs, function (o) { return ts.documentSpansEqual(o.definition, definition); });
172682
- if (!symbolToAddTo) {
172683
- symbolToAddTo = { definition: definition, references: [] };
172684
- outputs.push(symbolToAddTo);
172685
- }
172686
- for (var _b = 0, _c = outputReferencedSymbol.references; _b < _c.length; _b++) {
172687
- var ref = _c[_b];
172688
- // If it's in a mapped file, that is added to the todo list by `getMappedLocation`.
172689
- if (!ts.contains(symbolToAddTo.references, ref, ts.documentSpansEqual) && !getMappedLocation(project, documentSpanLocation(ref))) {
172690
- symbolToAddTo.references.push(ref);
172652
+ var projectOutputs = project.getLanguageService().findReferences(location.fileName, location.pos);
172653
+ if (projectOutputs) {
172654
+ var _loop_8 = function (referencedSymbol) {
172655
+ var mappedDefinitionFile = getMappedLocation(project, documentSpanLocation(referencedSymbol.definition));
172656
+ var definition = mappedDefinitionFile === undefined ?
172657
+ referencedSymbol.definition : __assign(__assign({}, referencedSymbol.definition), { textSpan: ts.createTextSpan(mappedDefinitionFile.pos, referencedSymbol.definition.textSpan.length), fileName: mappedDefinitionFile.fileName, contextSpan: getMappedContextSpan(referencedSymbol.definition, project) });
172658
+ var symbolToAddTo = ts.find(outputs, function (o) { return ts.documentSpansEqual(o.definition, definition); });
172659
+ if (!symbolToAddTo) {
172660
+ symbolToAddTo = { definition: definition, references: [] };
172661
+ outputs.push(symbolToAddTo);
172662
+ }
172663
+ for (var _a = 0, _b = referencedSymbol.references; _a < _b.length; _a++) {
172664
+ var ref = _b[_a];
172665
+ // If it's in a mapped file, that is added to the todo list by `getMappedLocation`.
172666
+ if (!ts.contains(symbolToAddTo.references, ref, ts.documentSpansEqual) && !getMappedLocation(project, documentSpanLocation(ref))) {
172667
+ symbolToAddTo.references.push(ref);
172668
+ }
172691
172669
  }
172670
+ };
172671
+ for (var _i = 0, projectOutputs_2 = projectOutputs; _i < projectOutputs_2.length; _i++) {
172672
+ var referencedSymbol = projectOutputs_2[_i];
172673
+ _loop_8(referencedSymbol);
172692
172674
  }
172693
- };
172694
- for (var _i = 0, _a = project.getLanguageService().findReferences(location.fileName, location.pos) || server.emptyArray; _i < _a.length; _i++) {
172695
- var outputReferencedSymbol = _a[_i];
172696
- _loop_8(outputReferencedSymbol);
172697
172675
  }
172698
172676
  });
172699
172677
  return outputs.filter(function (o) { return o.references.length !== 0; });
172700
172678
  }
172701
- function combineProjectOutputForFileReferences(projects, defaultProject, fileName) {
172702
- var outputs = [];
172703
- combineProjectOutputWorker(projects, defaultProject,
172704
- /*initialLocation*/ undefined, function (project) {
172705
- for (var _i = 0, _a = project.getLanguageService().getFileReferences(fileName) || server.emptyArray; _i < _a.length; _i++) {
172706
- var referenceEntry = _a[_i];
172707
- if (!ts.contains(outputs, referenceEntry, ts.documentSpansEqual)) {
172708
- outputs.push(referenceEntry);
172709
- }
172710
- }
172711
- });
172712
- return outputs;
172713
- }
172714
172679
  function forEachProjectInProjects(projects, path, cb) {
172715
172680
  for (var _i = 0, _a = ts.isArray(projects) ? projects : projects.projects; _i < _a.length; _i++) {
172716
172681
  var project = _a[_i];
@@ -174049,7 +174014,21 @@ var ts;
174049
174014
  Session.prototype.getFileReferences = function (args, simplifiedResult) {
174050
174015
  var _this = this;
174051
174016
  var projects = this.getProjects(args);
174052
- var references = combineProjectOutputForFileReferences(projects, this.getDefaultProject(args), args.file);
174017
+ var fileName = args.file;
174018
+ var references = [];
174019
+ forEachProjectInProjects(projects, /*path*/ undefined, function (project) {
174020
+ if (project.getCancellationToken().isCancellationRequested())
174021
+ return;
174022
+ var projectOutputs = project.getLanguageService().getFileReferences(fileName);
174023
+ if (projectOutputs) {
174024
+ for (var _i = 0, projectOutputs_3 = projectOutputs; _i < projectOutputs_3.length; _i++) {
174025
+ var referenceEntry = projectOutputs_3[_i];
174026
+ if (!ts.contains(references, referenceEntry, ts.documentSpansEqual)) {
174027
+ references.push(referenceEntry);
174028
+ }
174029
+ }
174030
+ }
174031
+ });
174053
174032
  if (!simplifiedResult)
174054
174033
  return references;
174055
174034
  var refs = references.map(function (entry) { return referenceEntryToReferencesResponseItem(_this.projectService, entry); });
@@ -174448,10 +174427,13 @@ var ts;
174448
174427
  Session.prototype.getNavigateToItems = function (args, simplifiedResult) {
174449
174428
  var full = this.getFullNavigateToItems(args);
174450
174429
  return !simplifiedResult ?
174451
- flattenCombineOutputResult(full) :
174452
174430
  ts.flatMap(full, function (_a) {
174453
- var project = _a.project, result = _a.result;
174454
- return result.map(function (navItem) {
174431
+ var navigateToItems = _a.navigateToItems;
174432
+ return navigateToItems;
174433
+ }) :
174434
+ ts.flatMap(full, function (_a) {
174435
+ var project = _a.project, navigateToItems = _a.navigateToItems;
174436
+ return navigateToItems.map(function (navItem) {
174455
174437
  var scriptInfo = project.getScriptInfo(navItem.fileName);
174456
174438
  var bakedItem = {
174457
174439
  name: navItem.name,
@@ -174481,13 +174463,57 @@ var ts;
174481
174463
  if (currentFileOnly) {
174482
174464
  ts.Debug.assertIsDefined(args.file);
174483
174465
  var _a = this.getFileAndProject(args), file = _a.file, project = _a.project;
174484
- return [{ project: project, result: project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, file) }];
174466
+ return [{ project: project, navigateToItems: project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, file) }];
174467
+ }
174468
+ var outputs = [];
174469
+ // This is effectively a hashset with `name` as the custom hash and `navigateToItemIsEqualTo` as the custom equals.
174470
+ // `name` is a very cheap hash function, but we could incorporate other properties to reduce collisions.
174471
+ var seenItems = new ts.Map(); // name to items with that name
174472
+ if (!args.file && !projectFileName) {
174473
+ // VS Code's `Go to symbol in workspaces` sends request like this
174474
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174475
+ // This appears to have been intended to search all projects but, in practice, it seems to only search
174476
+ // those that are downstream from already-loaded projects.
174477
+ // Filtering by !isSourceOfProjectReferenceRedirect is new, but seems appropriate and consistent with
174478
+ // the case below.
174479
+ this.projectService.loadAncestorProjectTree();
174480
+ this.projectService.forEachEnabledProject(function (project) { return addItemsForProject(project); });
174485
174481
  }
174486
- else if (!args.file && !projectFileName) {
174487
- return combineProjectOutputFromEveryProject(this.projectService, function (project) { return project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*filename*/ undefined, /*excludeDts*/ project.isNonTsProject()); }, navigateToItemIsEqualTo);
174482
+ else {
174483
+ // VS's `Go to symbol` sends requests with just a project and doesn't want cascading since it will
174484
+ // send a separate request for each project of interest
174485
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174486
+ // This doesn't really make sense unless it's a single project matching `projectFileName`
174487
+ var projects = this.getProjects(args);
174488
+ forEachProjectInProjects(projects, /*path*/ undefined, function (project) { return addItemsForProject(project); });
174489
+ }
174490
+ return outputs;
174491
+ // Mutates `outputs`
174492
+ function addItemsForProject(project) {
174493
+ var projectItems = project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*filename*/ undefined, /*excludeDts*/ project.isNonTsProject());
174494
+ var unseenItems = ts.filter(projectItems, function (item) { return tryAddSeenItem(item) && !getMappedLocation(documentSpanLocation(item), project); });
174495
+ if (unseenItems.length) {
174496
+ outputs.push({ project: project, navigateToItems: unseenItems });
174497
+ }
174498
+ }
174499
+ // Returns true if the item had not been seen before
174500
+ // Mutates `seenItems`
174501
+ function tryAddSeenItem(item) {
174502
+ var name = item.name;
174503
+ if (!seenItems.has(name)) {
174504
+ seenItems.set(name, [item]);
174505
+ return true;
174506
+ }
174507
+ var seen = seenItems.get(name);
174508
+ for (var _i = 0, seen_1 = seen; _i < seen_1.length; _i++) {
174509
+ var seenItem = seen_1[_i];
174510
+ if (navigateToItemIsEqualTo(seenItem, item)) {
174511
+ return false;
174512
+ }
174513
+ }
174514
+ seen.push(item);
174515
+ return true;
174488
174516
  }
174489
- var fileArgs = args;
174490
- return combineProjectOutputWhileOpeningReferencedProjects(this.getProjects(fileArgs), this.getDefaultProject(fileArgs), function (project) { return project.getLanguageService().getNavigateToItems(searchValue, maxResultCount, /*fileName*/ undefined, /*excludeDts*/ project.isNonTsProject()); }, documentSpanLocation, navigateToItemIsEqualTo);
174491
174517
  function navigateToItemIsEqualTo(a, b) {
174492
174518
  if (a === b) {
174493
174519
  return true;
@@ -174579,8 +174605,28 @@ var ts;
174579
174605
  var newPath = server.toNormalizedPath(args.newFilePath);
174580
174606
  var formatOptions = this.getHostFormatOptions();
174581
174607
  var preferences = this.getHostPreferences();
174582
- var changes = flattenCombineOutputResult(combineProjectOutputFromEveryProject(this.projectService, function (project) { return project.getLanguageService().getEditsForFileRename(oldPath, newPath, formatOptions, preferences); }, function (a, b) { return a.fileName === b.fileName; }));
174583
- return simplifiedResult ? changes.map(function (c) { return _this.mapTextChangeToCodeEdit(c); }) : changes;
174608
+ var seenFiles = new ts.Set();
174609
+ var textChanges = [];
174610
+ // TODO (https://github.com/microsoft/TypeScript/issues/47839)
174611
+ // This appears to have been intended to search all projects but, in practice, it seems to only search
174612
+ // those that are downstream from already-loaded projects.
174613
+ this.projectService.loadAncestorProjectTree();
174614
+ this.projectService.forEachEnabledProject(function (project) {
174615
+ var projectTextChanges = project.getLanguageService().getEditsForFileRename(oldPath, newPath, formatOptions, preferences);
174616
+ var projectFiles = [];
174617
+ for (var _i = 0, projectTextChanges_1 = projectTextChanges; _i < projectTextChanges_1.length; _i++) {
174618
+ var textChange = projectTextChanges_1[_i];
174619
+ if (!seenFiles.has(textChange.fileName)) {
174620
+ textChanges.push(textChange);
174621
+ projectFiles.push(textChange.fileName);
174622
+ }
174623
+ }
174624
+ for (var _a = 0, projectFiles_1 = projectFiles; _a < projectFiles_1.length; _a++) {
174625
+ var file = projectFiles_1[_a];
174626
+ seenFiles.add(file);
174627
+ }
174628
+ });
174629
+ return simplifiedResult ? textChanges.map(function (c) { return _this.mapTextChangeToCodeEdit(c); }) : textChanges;
174584
174630
  };
174585
174631
  Session.prototype.getCodeFixes = function (args, simplifiedResult) {
174586
174632
  var _this = this;
package/lib/typescript.js CHANGED
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -15027,7 +15027,7 @@ var ts;
15027
15027
  return name.kind === 161 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression);
15028
15028
  }
15029
15029
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
15030
- function getTextOfPropertyName(name) {
15030
+ function tryGetTextOfPropertyName(name) {
15031
15031
  switch (name.kind) {
15032
15032
  case 79 /* Identifier */:
15033
15033
  case 80 /* PrivateIdentifier */:
@@ -15039,11 +15039,15 @@ var ts;
15039
15039
  case 161 /* ComputedPropertyName */:
15040
15040
  if (isStringOrNumericLiteralLike(name.expression))
15041
15041
  return ts.escapeLeadingUnderscores(name.expression.text);
15042
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
15042
+ return undefined;
15043
15043
  default:
15044
15044
  return ts.Debug.assertNever(name);
15045
15045
  }
15046
15046
  }
15047
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
15048
+ function getTextOfPropertyName(name) {
15049
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
15050
+ }
15047
15051
  ts.getTextOfPropertyName = getTextOfPropertyName;
15048
15052
  function entityNameToString(name) {
15049
15053
  switch (name.kind) {
@@ -15595,7 +15599,7 @@ var ts;
15595
15599
  function getPropertyAssignment(objectLiteral, key, key2) {
15596
15600
  return objectLiteral.properties.filter(function (property) {
15597
15601
  if (property.kind === 295 /* PropertyAssignment */) {
15598
- var propName = getTextOfPropertyName(property.name);
15602
+ var propName = tryGetTextOfPropertyName(property.name);
15599
15603
  return key === propName || (!!key2 && key2 === propName);
15600
15604
  }
15601
15605
  return false;
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -15027,7 +15027,7 @@ var ts;
15027
15027
  return name.kind === 161 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression);
15028
15028
  }
15029
15029
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
15030
- function getTextOfPropertyName(name) {
15030
+ function tryGetTextOfPropertyName(name) {
15031
15031
  switch (name.kind) {
15032
15032
  case 79 /* Identifier */:
15033
15033
  case 80 /* PrivateIdentifier */:
@@ -15039,11 +15039,15 @@ var ts;
15039
15039
  case 161 /* ComputedPropertyName */:
15040
15040
  if (isStringOrNumericLiteralLike(name.expression))
15041
15041
  return ts.escapeLeadingUnderscores(name.expression.text);
15042
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
15042
+ return undefined;
15043
15043
  default:
15044
15044
  return ts.Debug.assertNever(name);
15045
15045
  }
15046
15046
  }
15047
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
15048
+ function getTextOfPropertyName(name) {
15049
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
15050
+ }
15047
15051
  ts.getTextOfPropertyName = getTextOfPropertyName;
15048
15052
  function entityNameToString(name) {
15049
15053
  switch (name.kind) {
@@ -15595,7 +15599,7 @@ var ts;
15595
15599
  function getPropertyAssignment(objectLiteral, key, key2) {
15596
15600
  return objectLiteral.properties.filter(function (property) {
15597
15601
  if (property.kind === 295 /* PropertyAssignment */) {
15598
- var propName = getTextOfPropertyName(property.name);
15602
+ var propName = tryGetTextOfPropertyName(property.name);
15599
15603
  return key === propName || (!!key2 && key2 === propName);
15600
15604
  }
15601
15605
  return false;
@@ -89,7 +89,7 @@ var ts;
89
89
  // The following is baselined as a literal template type without intervention
90
90
  /** The version of the TypeScript compiler release */
91
91
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
92
- ts.version = ts.versionMajorMinor + ".0-dev.20220305";
92
+ ts.version = ts.versionMajorMinor + ".0-dev.20220308";
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -14822,7 +14822,7 @@ var ts;
14822
14822
  return name.kind === 161 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression);
14823
14823
  }
14824
14824
  ts.isComputedNonLiteralName = isComputedNonLiteralName;
14825
- function getTextOfPropertyName(name) {
14825
+ function tryGetTextOfPropertyName(name) {
14826
14826
  switch (name.kind) {
14827
14827
  case 79 /* Identifier */:
14828
14828
  case 80 /* PrivateIdentifier */:
@@ -14834,11 +14834,15 @@ var ts;
14834
14834
  case 161 /* ComputedPropertyName */:
14835
14835
  if (isStringOrNumericLiteralLike(name.expression))
14836
14836
  return ts.escapeLeadingUnderscores(name.expression.text);
14837
- return ts.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");
14837
+ return undefined;
14838
14838
  default:
14839
14839
  return ts.Debug.assertNever(name);
14840
14840
  }
14841
14841
  }
14842
+ ts.tryGetTextOfPropertyName = tryGetTextOfPropertyName;
14843
+ function getTextOfPropertyName(name) {
14844
+ return ts.Debug.checkDefined(tryGetTextOfPropertyName(name));
14845
+ }
14842
14846
  ts.getTextOfPropertyName = getTextOfPropertyName;
14843
14847
  function entityNameToString(name) {
14844
14848
  switch (name.kind) {
@@ -15390,7 +15394,7 @@ var ts;
15390
15394
  function getPropertyAssignment(objectLiteral, key, key2) {
15391
15395
  return objectLiteral.properties.filter(function (property) {
15392
15396
  if (property.kind === 295 /* PropertyAssignment */) {
15393
- var propName = getTextOfPropertyName(property.name);
15397
+ var propName = tryGetTextOfPropertyName(property.name);
15394
15398
  return key === propName || (!!key2 && key2 === propName);
15395
15399
  }
15396
15400
  return false;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "4.7.0-dev.20220305",
5
+ "version": "4.7.0-dev.20220308",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [