mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Support navigateTo for new import/export syntax
This commit is contained in:
parent
7b7d2b6006
commit
951f7cf31f
@ -802,6 +802,11 @@ module ts {
|
||||
case SyntaxKind.EnumDeclaration:
|
||||
case SyntaxKind.ModuleDeclaration:
|
||||
case SyntaxKind.ImportEqualsDeclaration:
|
||||
case SyntaxKind.ExportSpecifier:
|
||||
case SyntaxKind.ImportSpecifier:
|
||||
case SyntaxKind.ImportEqualsDeclaration:
|
||||
case SyntaxKind.ImportClause:
|
||||
case SyntaxKind.NamespaceImport:
|
||||
case SyntaxKind.GetAccessor:
|
||||
case SyntaxKind.SetAccessor:
|
||||
case SyntaxKind.TypeLiteral:
|
||||
@ -841,6 +846,37 @@ module ts {
|
||||
case SyntaxKind.PropertySignature:
|
||||
namedDeclarations.push(<Declaration>node);
|
||||
break;
|
||||
|
||||
case SyntaxKind.ExportDeclaration:
|
||||
// Handle named exports case e.g.:
|
||||
// export {a, b as B} from "mod";
|
||||
if ((<ExportDeclaration>node).exportClause) {
|
||||
forEach((<ExportDeclaration>node).exportClause.elements, visit);
|
||||
}
|
||||
break;
|
||||
|
||||
case SyntaxKind.ImportDeclaration:
|
||||
var importClause = (<ImportDeclaration>node).importClause;
|
||||
if (importClause) {
|
||||
// Handle default import case e.g.:
|
||||
// import d from "mod";
|
||||
if (importClause.name) {
|
||||
namedDeclarations.push(importClause);
|
||||
}
|
||||
|
||||
// Handle named bindings in imports e.g.:
|
||||
// import * as NS from "mod";
|
||||
// import {a, b as B} from "mod";
|
||||
if (importClause.namedBindings) {
|
||||
if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) {
|
||||
namedDeclarations.push(<NamespaceImport>importClause.namedBindings);
|
||||
}
|
||||
else {
|
||||
forEach((<NamedImports>importClause.namedBindings).elements, visit);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
@ -2010,6 +2046,12 @@ module ts {
|
||||
case SyntaxKind.TypeParameter: return ScriptElementKind.typeParameterElement;
|
||||
case SyntaxKind.EnumMember: return ScriptElementKind.variableElement;
|
||||
case SyntaxKind.Parameter: return (node.flags & NodeFlags.AccessibilityModifier) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement;
|
||||
case SyntaxKind.ImportEqualsDeclaration:
|
||||
case SyntaxKind.ImportSpecifier:
|
||||
case SyntaxKind.ImportClause:
|
||||
case SyntaxKind.ExportSpecifier:
|
||||
case SyntaxKind.NamespaceImport:
|
||||
return ScriptElementKind.alias;
|
||||
}
|
||||
return ScriptElementKind.unknown;
|
||||
}
|
||||
|
||||
20
tests/cases/fourslash/navigateItemsExports.ts
Normal file
20
tests/cases/fourslash/navigateItemsExports.ts
Normal file
@ -0,0 +1,20 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////export { {| "itemName": "a", "kind": "alias", "parentName": "" |}a } from "a";
|
||||
////
|
||||
////export { {| "itemName": "B", "kind": "alias", "parentName": "" |}b as B } from "a";
|
||||
////
|
||||
////export { {| "itemName": "c", "kind": "alias", "parentName": "" |}c,
|
||||
//// {| "itemName": "D", "kind": "alias", "parentName": "" |}d as D } from "a";
|
||||
////
|
||||
////{| "itemName": "f", "kind": "alias", "parentName": "" |}export import f = require("a");
|
||||
|
||||
test.markers().forEach(marker => {
|
||||
verify.navigationItemsListContains(
|
||||
marker.data.itemName,
|
||||
marker.data.kind,
|
||||
marker.data.itemName,
|
||||
"exact",
|
||||
marker.fileName,
|
||||
marker.data.parentName);
|
||||
});
|
||||
25
tests/cases/fourslash/navigateItemsImports.ts
Normal file
25
tests/cases/fourslash/navigateItemsImports.ts
Normal file
@ -0,0 +1,25 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////import {| "itemName": "ns", "kind": "alias", "parentName": "" |}* as ns from "a";
|
||||
////
|
||||
////import { {| "itemName": "a", "kind": "alias", "parentName": "" |}a } from "a";
|
||||
////
|
||||
////import { {| "itemName": "B", "kind": "alias", "parentName": "" |}b as B } from "a";
|
||||
////
|
||||
////import { {| "itemName": "c", "kind": "alias", "parentName": "" |}c,
|
||||
//// {| "itemName": "D", "kind": "alias", "parentName": "" |}d as D } from "a";
|
||||
////
|
||||
////import {| "itemName": "d1", "kind": "alias", "parentName": "" |}d1, {
|
||||
//// {| "itemName": "e", "kind": "alias", "parentName": "" |}e } from "a";
|
||||
////
|
||||
////{| "itemName": "f", "kind": "alias", "parentName": "" |}import f = require("a");
|
||||
|
||||
test.markers().forEach(marker => {
|
||||
verify.navigationItemsListContains(
|
||||
marker.data.itemName,
|
||||
marker.data.kind,
|
||||
marker.data.itemName,
|
||||
"exact",
|
||||
marker.fileName,
|
||||
marker.data.parentName);
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user