Skip to content

Commit cfe7284

Browse files
committed
Merge branch 'master' into reduceIntersectionTypes
2 parents d25a6ec + 6c28da3 commit cfe7284

File tree

84 files changed

+2666
-1037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+2666
-1037
lines changed

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,7 @@
3434
path = tests/cases/user/axios-src/axios-src
3535
url = https://github.com/axios/axios.git
3636
ignore = all
37+
[submodule "tests/cases/user/prettier/prettier"]
38+
path = tests/cases/user/prettier/prettier
39+
url = https://github.com/prettier/prettier.git
40+
ignore = all

package-lock.json

Lines changed: 670 additions & 892 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@
4848
"@types/q": "latest",
4949
"@types/run-sequence": "latest",
5050
"@types/through2": "latest",
51+
"@types/travis-fold": "latest",
5152
"@types/xml2js": "^0.4.0",
52-
"xml2js": "^0.4.19",
5353
"browser-resolve": "^1.11.2",
5454
"browserify": "latest",
5555
"chai": "latest",
56+
"chalk": "latest",
5657
"convert-source-map": "latest",
5758
"del": "latest",
5859
"gulp": "3.X",
@@ -77,9 +78,9 @@
7778
"through2": "latest",
7879
"travis-fold": "latest",
7980
"tslint": "latest",
81+
"typescript": "next",
8082
"vinyl": "latest",
81-
"chalk": "latest",
82-
"typescript": "next"
83+
"xml2js": "^0.4.19"
8384
},
8485
"scripts": {
8586
"pretest": "jake tests",

scripts/buildProtocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ function writeProtocolFile(outputFile: string, protocolTs: string, typeScriptSer
178178
ts.sys.writeFile(outputFile, protocolDts);
179179

180180
if (diagnostics.length) {
181-
const flattenedDiagnostics = diagnostics.map(d => `${ts.flattenDiagnosticMessageText(d.messageText, "\n")} at ${d.file.fileName} line ${d.start}`).join("\n");
181+
const flattenedDiagnostics = diagnostics.map(d => `${ts.flattenDiagnosticMessageText(d.messageText, "\n")} at ${d.file ? d.file.fileName : "<unknown>"} line ${d.start}`).join("\n");
182182
throw new Error(`Unexpected errors during sanity check: ${flattenedDiagnostics}`);
183183
}
184184
}

scripts/types/ambient.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@ declare module "gulp-insert" {
1414
}
1515

1616
declare module "sorcery";
17-
declare module "travis-fold";

src/compiler/checker.ts

Lines changed: 130 additions & 16 deletions
Large diffs are not rendered by default.

src/compiler/emitter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,9 +1441,9 @@ namespace ts {
14411441

14421442
function emitElementAccessExpression(node: ElementAccessExpression) {
14431443
emitExpression(node.expression);
1444-
const openPos = emitTokenWithComment(SyntaxKind.OpenBracketToken, node.expression.end, writePunctuation, node);
1444+
emitTokenWithComment(SyntaxKind.OpenBracketToken, node.expression.end, writePunctuation, node);
14451445
emitExpression(node.argumentExpression);
1446-
emitTokenWithComment(SyntaxKind.CloseBracketToken, node.argumentExpression ? node.argumentExpression.end : openPos, writePunctuation, node);
1446+
emitTokenWithComment(SyntaxKind.CloseBracketToken, node.argumentExpression.end, writePunctuation, node);
14471447
}
14481448

14491449
function emitCallExpression(node: CallExpression) {

src/compiler/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3620,6 +3620,9 @@ namespace ts {
36203620
BooleanLike = Boolean | BooleanLiteral,
36213621
EnumLike = Enum | EnumLiteral,
36223622
ESSymbolLike = ESSymbol | UniqueESSymbol,
3623+
VoidLike = Void | Undefined,
3624+
/* @internal */
3625+
DisjointDomains = NonPrimitive | StringLike | NumberLike | BooleanLike | ESSymbolLike | VoidLike | Null,
36233626
UnionOrIntersection = Union | Intersection,
36243627
StructuredType = Object | Union | Intersection,
36253628
TypeVariable = TypeParameter | IndexedAccess,

src/compiler/utilities.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,7 +1889,13 @@ namespace ts {
18891889

18901890
export function getJSDocHost(node: JSDocTag): HasJSDoc {
18911891
while (node.parent.kind === SyntaxKind.JSDocTypeLiteral) {
1892-
node = node.parent.parent.parent as JSDocParameterTag;
1892+
if (node.parent.parent.kind === SyntaxKind.JSDocTypedefTag) {
1893+
node = node.parent.parent as JSDocTypedefTag;
1894+
}
1895+
else {
1896+
// node.parent.parent is a type expression, child of a parameter type
1897+
node = node.parent.parent.parent as JSDocParameterTag;
1898+
}
18931899
}
18941900
Debug.assert(node.parent!.kind === SyntaxKind.JSDocComment);
18951901
return node.parent!.parent!;
@@ -4025,12 +4031,14 @@ namespace ts {
40254031
}
40264032

40274033
/** Add a value to a set, and return true if it wasn't already present. */
4028-
export function addToSeen(seen: Map<true>, key: string | number): boolean {
4034+
export function addToSeen(seen: Map<true>, key: string | number): boolean;
4035+
export function addToSeen<T>(seen: Map<T>, key: string | number, value: T): boolean;
4036+
export function addToSeen<T>(seen: Map<T>, key: string | number, value: T = true as any): boolean {
40294037
key = String(key);
40304038
if (seen.has(key)) {
40314039
return false;
40324040
}
4033-
seen.set(key, true);
4041+
seen.set(key, value);
40344042
return true;
40354043
}
40364044

src/harness/harness.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,14 +304,13 @@ namespace Utils {
304304
o.containsParseError = true;
305305
}
306306

307-
ts.forEach(Object.getOwnPropertyNames(n), propertyName => {
307+
for (const propertyName of Object.getOwnPropertyNames(n) as ReadonlyArray<keyof ts.SourceFile | keyof ts.Identifier>) {
308308
switch (propertyName) {
309309
case "parent":
310310
case "symbol":
311311
case "locals":
312312
case "localSymbol":
313313
case "kind":
314-
case "semanticDiagnostics":
315314
case "id":
316315
case "nodeCount":
317316
case "symbolCount":
@@ -334,7 +333,6 @@ namespace Utils {
334333
}
335334
break;
336335

337-
case "referenceDiagnostics":
338336
case "parseDiagnostics":
339337
o[propertyName] = convertDiagnostics((<any>n)[propertyName]);
340338
break;
@@ -355,9 +353,7 @@ namespace Utils {
355353
default:
356354
o[propertyName] = (<any>n)[propertyName];
357355
}
358-
359-
return undefined;
360-
});
356+
}
361357

362358
return o;
363359
}

src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,6 +1251,15 @@
12511251
</Str>
12521252
<Disp Icon="Str" />
12531253
</Item>
1254+
<Item ItemId=";An_element_access_expression_should_take_an_argument_1011" ItemType="0" PsrId="306" Leaf="true">
1255+
<Str Cat="Text">
1256+
<Val><![CDATA[An element access expression should take an argument.]]></Val>
1257+
<Tgt Cat="Text" Stat="Loc" Orig="New">
1258+
<Val><![CDATA[Un'espressione di accesso a elementi deve accettare un argomento.]]></Val>
1259+
</Tgt>
1260+
</Str>
1261+
<Disp Icon="Str" />
1262+
</Item>
12541263
<Item ItemId=";An_enum_member_cannot_have_a_numeric_name_2452" ItemType="0" PsrId="306" Leaf="true">
12551264
<Str Cat="Text">
12561265
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
@@ -6504,6 +6513,15 @@
65046513
</Str>
65056514
<Disp Icon="Str" />
65066515
</Item>
6516+
<Item ItemId=";Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195" ItemType="0" PsrId="306" Leaf="true">
6517+
<Str Cat="Text">
6518+
<Val><![CDATA[Resolve 'keyof' to string valued property names only (no numbers or symbols).]]></Val>
6519+
<Tgt Cat="Text" Stat="Loc" Orig="New">
6520+
<Val><![CDATA[Risolvere 'keyof' solo in nomi di proprietà con valori stringa (senza numeri o simboli).]]></Val>
6521+
</Tgt>
6522+
</Str>
6523+
<Disp Icon="Str" />
6524+
</Item>
65076525
<Item ItemId=";Resolving_from_node_modules_folder_6118" ItemType="0" PsrId="306" Leaf="true">
65086526
<Str Cat="Text">
65096527
<Val><![CDATA[Resolving from node_modules folder...]]></Val>
@@ -8754,6 +8772,15 @@
87548772
</Str>
87558773
<Disp Icon="Str" />
87568774
</Item>
8775+
<Item ItemId=";_0_is_declared_but_never_used_6196" ItemType="0" PsrId="306" Leaf="true">
8776+
<Str Cat="Text">
8777+
<Val><![CDATA['{0}' is declared but never used.]]></Val>
8778+
<Tgt Cat="Text" Stat="Loc" Orig="New">
8779+
<Val><![CDATA[La variabile '{0}' è dichiarata, ma non viene mai usata.]]></Val>
8780+
</Tgt>
8781+
</Str>
8782+
<Disp Icon="Str" />
8783+
</Item>
87578784
<Item ItemId=";_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012" ItemType="0" PsrId="306" Leaf="true">
87588785
<Str Cat="Text">
87598786
<Val><![CDATA['{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?]]></Val>

src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,15 @@
12411241
</Str>
12421242
<Disp Icon="Str" />
12431243
</Item>
1244+
<Item ItemId=";An_element_access_expression_should_take_an_argument_1011" ItemType="0" PsrId="306" Leaf="true">
1245+
<Str Cat="Text">
1246+
<Val><![CDATA[An element access expression should take an argument.]]></Val>
1247+
<Tgt Cat="Text" Stat="Loc" Orig="New">
1248+
<Val><![CDATA[Wyrażenie dostępu do elementu powinno przyjmować argument.]]></Val>
1249+
</Tgt>
1250+
</Str>
1251+
<Disp Icon="Str" />
1252+
</Item>
12441253
<Item ItemId=";An_enum_member_cannot_have_a_numeric_name_2452" ItemType="0" PsrId="306" Leaf="true">
12451254
<Str Cat="Text">
12461255
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
@@ -6494,6 +6503,9 @@
64946503
<Item ItemId=";Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195" ItemType="0" PsrId="306" Leaf="true">
64956504
<Str Cat="Text">
64966505
<Val><![CDATA[Resolve 'keyof' to string valued property names only (no numbers or symbols).]]></Val>
6506+
<Tgt Cat="Text" Stat="Loc" Orig="New">
6507+
<Val><![CDATA[Rozwiązuj elementy „keyof” tylko do nazw właściwości mających jako wartość ciągi (nie liczby czy symbole).]]></Val>
6508+
</Tgt>
64976509
</Str>
64986510
<Disp Icon="Str" />
64996511
</Item>
@@ -8747,6 +8759,15 @@
87478759
</Str>
87488760
<Disp Icon="Str" />
87498761
</Item>
8762+
<Item ItemId=";_0_is_declared_but_never_used_6196" ItemType="0" PsrId="306" Leaf="true">
8763+
<Str Cat="Text">
8764+
<Val><![CDATA['{0}' is declared but never used.]]></Val>
8765+
<Tgt Cat="Text" Stat="Loc" Orig="New">
8766+
<Val><![CDATA[Element „{0}” jest zadeklarowany, ale nie jest nigdy używany.]]></Val>
8767+
</Tgt>
8768+
</Str>
8769+
<Disp Icon="Str" />
8770+
</Item>
87508771
<Item ItemId=";_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012" ItemType="0" PsrId="306" Leaf="true">
87518772
<Str Cat="Text">
87528773
<Val><![CDATA['{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?]]></Val>

src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,6 +1250,15 @@
12501250
</Str>
12511251
<Disp Icon="Str" />
12521252
</Item>
1253+
<Item ItemId=";An_element_access_expression_should_take_an_argument_1011" ItemType="0" PsrId="306" Leaf="true">
1254+
<Str Cat="Text">
1255+
<Val><![CDATA[An element access expression should take an argument.]]></Val>
1256+
<Tgt Cat="Text" Stat="Loc" Orig="New">
1257+
<Val><![CDATA[Выражение доступа к элементу должно принимать аргумент.]]></Val>
1258+
</Tgt>
1259+
</Str>
1260+
<Disp Icon="Str" />
1261+
</Item>
12531262
<Item ItemId=";An_enum_member_cannot_have_a_numeric_name_2452" ItemType="0" PsrId="306" Leaf="true">
12541263
<Str Cat="Text">
12551264
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
@@ -6506,6 +6515,9 @@
65066515
<Item ItemId=";Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195" ItemType="0" PsrId="306" Leaf="true">
65076516
<Str Cat="Text">
65086517
<Val><![CDATA[Resolve 'keyof' to string valued property names only (no numbers or symbols).]]></Val>
6518+
<Tgt Cat="Text" Stat="Loc" Orig="New">
6519+
<Val><![CDATA[Разрешать "keyof" только в имена свойств со строковым значением (не числа и не символы).]]></Val>
6520+
</Tgt>
65096521
</Str>
65106522
<Disp Icon="Str" />
65116523
</Item>
@@ -8759,6 +8771,15 @@
87598771
</Str>
87608772
<Disp Icon="Str" />
87618773
</Item>
8774+
<Item ItemId=";_0_is_declared_but_never_used_6196" ItemType="0" PsrId="306" Leaf="true">
8775+
<Str Cat="Text">
8776+
<Val><![CDATA['{0}' is declared but never used.]]></Val>
8777+
<Tgt Cat="Text" Stat="Loc" Orig="New">
8778+
<Val><![CDATA["{0}" объявлен, но никогда не использовался.]]></Val>
8779+
</Tgt>
8780+
</Str>
8781+
<Disp Icon="Str" />
8782+
</Item>
87628783
<Item ItemId=";_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012" ItemType="0" PsrId="306" Leaf="true">
87638784
<Str Cat="Text">
87648785
<Val><![CDATA['{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?]]></Val>

src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,9 @@
899899
<Item ItemId=";Add_0_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
900900
<Str Cat="Text">
901901
<Val><![CDATA[Add '{0}.' to unresolved variable]]></Val>
902+
<Tgt Cat="Text" Stat="Loc" Orig="New">
903+
<Val><![CDATA[Çözümlenmemiş değişkene '{0}.' ekle]]></Val>
904+
</Tgt>
902905
</Str>
903906
<Disp Icon="Str" />
904907
</Item>
@@ -1001,6 +1004,9 @@
10011004
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
10021005
<Str Cat="Text">
10031006
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
1007+
<Tgt Cat="Text" Stat="Loc" Orig="New">
1008+
<Val><![CDATA[Bir üye adıyla eşleşen tüm çözülmemiş değişkenlere niteleyici ekle]]></Val>
1009+
</Tgt>
10041010
</Str>
10051011
<Disp Icon="Str" />
10061012
</Item>
@@ -6491,6 +6497,12 @@
64916497
</Str>
64926498
<Disp Icon="Str" />
64936499
</Item>
6500+
<Item ItemId=";Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195" ItemType="0" PsrId="306" Leaf="true">
6501+
<Str Cat="Text">
6502+
<Val><![CDATA[Resolve 'keyof' to string valued property names only (no numbers or symbols).]]></Val>
6503+
</Str>
6504+
<Disp Icon="Str" />
6505+
</Item>
64946506
<Item ItemId=";Resolving_from_node_modules_folder_6118" ItemType="0" PsrId="306" Leaf="true">
64956507
<Str Cat="Text">
64966508
<Val><![CDATA[Resolving from node_modules folder...]]></Val>
@@ -8741,6 +8753,12 @@
87418753
</Str>
87428754
<Disp Icon="Str" />
87438755
</Item>
8756+
<Item ItemId=";_0_is_declared_but_never_used_6196" ItemType="0" PsrId="306" Leaf="true">
8757+
<Str Cat="Text">
8758+
<Val><![CDATA['{0}' is declared but never used.]]></Val>
8759+
</Str>
8760+
<Disp Icon="Str" />
8761+
</Item>
87448762
<Item ItemId=";_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012" ItemType="0" PsrId="306" Leaf="true">
87458763
<Str Cat="Text">
87468764
<Val><![CDATA['{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?]]></Val>

src/services/codefixes/importFixes.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,21 @@ namespace ts.codefix {
9898
symbolToken: Node | undefined,
9999
preferences: UserPreferences,
100100
): { readonly moduleSpecifier: string, readonly codeAction: CodeAction } {
101-
const exportInfos = getAllReExportingModules(exportedSymbol, symbolName, checker, allSourceFiles);
101+
const exportInfos = getAllReExportingModules(exportedSymbol, moduleSymbol, symbolName, sourceFile, checker, allSourceFiles);
102102
Debug.assert(exportInfos.some(info => info.moduleSymbol === moduleSymbol));
103103
// We sort the best codefixes first, so taking `first` is best for completions.
104104
const moduleSpecifier = first(getNewImportInfos(program, sourceFile, exportInfos, compilerOptions, getCanonicalFileName, host, preferences)).moduleSpecifier;
105105
const ctx: ImportCodeFixContext = { host, program, checker, compilerOptions, sourceFile, formatContext, symbolName, getCanonicalFileName, symbolToken, preferences };
106106
return { moduleSpecifier, codeAction: first(getCodeActionsForImport(exportInfos, ctx)) };
107107
}
108-
function getAllReExportingModules(exportedSymbol: Symbol, symbolName: string, checker: TypeChecker, allSourceFiles: ReadonlyArray<SourceFile>): ReadonlyArray<SymbolExportInfo> {
108+
function getAllReExportingModules(exportedSymbol: Symbol, exportingModuleSymbol: Symbol, symbolName: string, sourceFile: SourceFile, checker: TypeChecker, allSourceFiles: ReadonlyArray<SourceFile>): ReadonlyArray<SymbolExportInfo> {
109109
const result: SymbolExportInfo[] = [];
110-
forEachExternalModule(checker, allSourceFiles, moduleSymbol => {
110+
forEachExternalModule(checker, allSourceFiles, (moduleSymbol, moduleFile) => {
111+
// Don't import from a re-export when looking "up" like to `./index` or `../index`.
112+
if (moduleFile && moduleSymbol !== exportingModuleSymbol && startsWith(sourceFile.fileName, getDirectoryPath(moduleFile.fileName))) {
113+
return;
114+
}
115+
111116
for (const exported of checker.getExportsOfModule(moduleSymbol)) {
112117
if (exported.escapedName === InternalSymbolName.Default || exported.name === symbolName && skipAlias(exported, checker) === exportedSymbol) {
113118
const isDefaultExport = checker.tryGetMemberInModuleExports(InternalSymbolName.Default, moduleSymbol) === exported;

src/services/services.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,6 @@ namespace ts {
546546
public typeReferenceDirectives: FileReference[];
547547

548548
public syntacticDiagnostics: Diagnostic[];
549-
public referenceDiagnostics: Diagnostic[];
550549
public parseDiagnostics: Diagnostic[];
551550
public bindDiagnostics: Diagnostic[];
552551

0 commit comments

Comments
 (0)