mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-14 19:16:17 -06:00
Merge branch 'master' into literalTypes
This commit is contained in:
commit
868d5e602f
145
.mailmap
Normal file
145
.mailmap
Normal file
@ -0,0 +1,145 @@
|
||||
|
||||
Alexander <alexander@kuvaev.me># Alexander Kuvaev
|
||||
AbubakerB <abubaker_bashir@hotmail.com> # Abubaker Bashir
|
||||
Adam Freidin <adam.freidin@gmail.com> Adam Freidin <afreidin@adobe.com>
|
||||
Adi Dahiya <adahiya@palantir.com> Adi Dahiya <adi.dahiya14@gmail.com>
|
||||
Ahmad Farid <ahfarid@microsoft.com> ahmad-farid <ahfarid@microsoft.com>
|
||||
Alex Eagle <alexeagle@google.com>
|
||||
Anders Hejlsberg <andersh@microsoft.com> unknown <andersh@AndersX1.NOE.Nokia.com> unknown <andersh@andersh-yoga.redmond.corp.microsoft.com>
|
||||
Andrew Z Allen <me@andrewzallen.com>
|
||||
Andy Hanson <anhans@microsoft.com> Andy <anhans@microsoft.com>
|
||||
Anil Anar <anilanar@hotmail.com>
|
||||
Anton Tolmachev <myste@mail.ru>
|
||||
Arnavion <arnavion@gmail.com> # Arnav Singh
|
||||
Arthur Ozga <aozgaa@umich.edu> Arthur Ozga <t-arthoz@microsoft.com>
|
||||
Asad Saeeduddin <masaeedu@gmail.com>
|
||||
Schmavery <avery.schmavery@gmail.com> # Avery Morin
|
||||
Basarat Ali Syed <basaratali@gmail.com> Basarat Syed <basaratali@gmail.com> basarat <basaratali@gmail.com>
|
||||
Bill Ticehurst <billti@hotmail.com> Bill Ticehurst <billti@microsoft.com>
|
||||
Ben Duffield <jebavarde@gmail.com>
|
||||
Blake Embrey <hello@blakeembrey.com>
|
||||
Bowden Kelly <wilkelly@microsoft.com>
|
||||
Brett Mayen <bmayen@midnightsnacks.net>
|
||||
Bryan Forbes <bryan@reigndropsfall.net>
|
||||
Caitlin Potter <caitpotter88@gmail.com>
|
||||
ChrisBubernak <chris.bubernak@gmail.com> unknown <chrbub@chrbub1.redmond.corp.microsoft.com> # Chris Bubernak
|
||||
Chuck Jazdzewski <chuckj@google.com>
|
||||
Colby Russell <mr@colbyrussell.com>
|
||||
Colin Snover <github.com@zetafleet.com>
|
||||
Cyrus Najmabadi <cyrusn@microsoft.com> CyrusNajmabadi <cyrusn@microsoft.com> unknown <cyrusn@cylap.ntdev.corp.microsoft.com>
|
||||
Dan Corder <dev@dancorder.com>
|
||||
Dan Quirk <danquirk@microsoft.com> Dan Quirk <danquirk@users.noreply.github.com> nknown <danquirk@DANQUIRK1.redmond.corp.microsoft.com>
|
||||
Daniel Rosenwasser <drosen@microsoft.com> Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com> Daniel Rosenwasser <DanielRosenwasser@gmail.com> Daniel Rosenwasser <Daniel.Rosenwasser@microsoft.com> Daniel Rosenwasser <DanielRosenwasser@microsoft.com>
|
||||
David Li <jiawei.davidli@gmail.com>
|
||||
David Souther <davidsouther@gmail.com>
|
||||
Denis Nedelyaev <denvned@gmail.com>
|
||||
Dick van den Brink <d_vandenbrink@outlook.com> unknown <d_vandenbrink@outlook.com> unknown <d_vandenbrink@live.com>
|
||||
Dirk Baeumer <dirkb@microsoft.com> Dirk Bäumer <dirkb@microsoft.com> # Dirk Bäumer
|
||||
Dirk Holtwick <dirk.holtwick@gmail.com>
|
||||
Doug Ilijev <dilijev@users.noreply.github.com>
|
||||
Erik Edrosa <erik.edrosa@gmail.com>
|
||||
Ethan Rubio <ethanrubio@users.noreply.github.com>
|
||||
Evan Martin <martine@danga.com>
|
||||
Evan Sebastian <evanlhoini@gmail.com>
|
||||
Eyas <eyas.sharaiha@gmail.com> # Eyas Sharaiha
|
||||
falsandtru <falsandtru@users.noreply.github.com> # @falsandtru
|
||||
Frank Wallis <fwallis@outlook.com>
|
||||
František Žiačik <fziacik@gratex.com> František Žiačik <ziacik@gmail.com>
|
||||
Gabriel Isenberg <gisenberg@gmail.com>
|
||||
Gilad Peleg <giladp007@gmail.com>
|
||||
Graeme Wicksted <graeme.wicksted@gmail.com>
|
||||
Guillaume Salles <guillaume.salles@me.com>
|
||||
Guy Bedford <guybedford@gmail.com> guybedford <guybedford@gmail.com>
|
||||
Harald Niesche <harald@niesche.de>
|
||||
Iain Monro <iain.monro@softwire.com>
|
||||
Ingvar Stepanyan <me@rreverser.com>
|
||||
impinball <impinball@gmail.com> # Isiah Meadows
|
||||
Ivo Gabe de Wolff <ivogabe@ivogabe.nl>
|
||||
James Whitney <james@whitney.io>
|
||||
Jason Freeman <jfreeman@microsoft.com> Jason Freeman <JsonFreeman@users.noreply.github.com>
|
||||
Jason Killian <jkillian@palantir.com>
|
||||
Jason Ramsay <jasonra@microsoft.com> jramsay <jramsay@users.noreply.github.com>
|
||||
Jed Mao <jed.hunsaker@gmail.com>
|
||||
Jeffrey Morlan <jmmorlan@sonic.net>
|
||||
tobisek <jiri@wix.com> # Jiri Tobisek
|
||||
Johannes Rieken <jrieken@microsoft.com>
|
||||
John Vilk <jvilk@cs.umass.edu>
|
||||
jbondc <jbondc@gdesolutions.com> jbondc <jbondc@golnetwork.com> jbondc <jbondc@openmv.com> # Jonathan Bond-Caron
|
||||
Jonathan Park <jpark@daptiv.com>
|
||||
Jonathan Turner <jont@microsoft.com> Jonathan Turner <probata@hotmail.com>
|
||||
Jonathan Toland <toland@dnalot.com>
|
||||
Jesse Schalken <me@jesseschalken.com>
|
||||
Josh Kalderimis <josh.kalderimis@gmail.com>
|
||||
Josh Soref <jsoref@users.noreply.github.com>
|
||||
Juan Luis Boya García <ntrrgc@gmail.com>
|
||||
Julian Williams <julianjw92@gmail.com>
|
||||
Herrington Darkholme <nonamesheep1@gmail.com>
|
||||
Kagami Sascha Rosylight <saschanaz@outlook.com> SaschaNaz <saschanaz@outlook.com>
|
||||
Kanchalai Tanglertsampan <yuisu@microsoft.com> Yui <yuit@users.noreply.github.com>
|
||||
Kanchalai Tanglertsampan <yuisu@microsoft.com> Yui T <yuisu@microsoft.com>
|
||||
Kanchalai Tanglertsampan <yuisu@microsoft.com> Yui <yuit@users.noreply.github.com>
|
||||
Kanchalai Tanglertsampan <yuisu@microsoft.com> Yui <yuisu@microsoft.com>
|
||||
Kanchalai Tanglertsampan <yuisu@microsoft.com> yui T <yuisu@microsoft.com>
|
||||
Keith Mashinter <kmashint@yahoo.com> kmashint <kmashint@yahoo.com>
|
||||
Ken Howard <ken@simplicatedweb.com>
|
||||
kimamula <kenji.imamula@gmail.com> # Kenji Imamula
|
||||
Kyle Kelley <rgbkrk@gmail.com>
|
||||
Lorant Pinter <lorant.pinter@prezi.com>
|
||||
Lucien Greathouse <me@lpghatguy.com>
|
||||
Martin Vseticka <vseticka.martin@gmail.com> Martin Všeticka <vseticka.martin@gmail.com> MartyIX <vseticka.martin@gmail.com>
|
||||
vvakame <vvakame+dev@gmail.com> # Masahiro Wakame
|
||||
Matt McCutchen <rmccutch@mit.edu>
|
||||
Max Deepfield <maxdeepfield@absolutefreakout.com>
|
||||
Micah Zoltu <micah@zoltu.net>
|
||||
Mohamed Hegazy <mhegazy@microsoft.com>
|
||||
Nathan Shively-Sanders <nathansa@microsoft.com>
|
||||
Nathan Yee <ny.nathan.yee@gmail.com>
|
||||
Nima Zahedi <nima.zahedee@gmail.com>
|
||||
Noj Vek <nojvek@gmail.com>
|
||||
mihailik <mihailik@gmail.com> # Oleg Mihailik
|
||||
Oleksandr Chekhovskyi <oleksandr.chekhovskyi@hansoft.com>
|
||||
Paul van Brenk <paul.van.brenk@microsoft.com> Paul van Brenk <paul.van.brenk@outlook.com> unknown <paul.van.brenk@microsoft.com> unknown <paul.van.brenk@microsoft.com> unknown <pvanbren@pvbvsproai.redmond.corp.microsoft.com>
|
||||
Oskar Segersva¨rd <oskar.segersvard@widespace.com>
|
||||
pcan <piero.cangianiello@gmail.com> # Piero Cangianiello
|
||||
pcbro <2bux89+dk3zspjmuh16o@sharklasers.com> # @pcbro
|
||||
Pedro Maltez <pedro@pedro.ac> # Pedro Maltez
|
||||
piloopin <piloopin@gmail.com> # @piloopin
|
||||
milkisevil <philip@milkisevil.com> # Philip Bulley
|
||||
progre <djyayutto@gmail.com> # @progre
|
||||
Prayag Verma <prayag.verma@gmail.com>
|
||||
Punya Biswal <pbiswal@palantir.com>
|
||||
Rado Kirov <radokirov@google.com>
|
||||
Ron Buckton <rbuckton@microsoft.com> Ron Buckton <ron.buckton@microsoft.com>
|
||||
Richard Knoll <riknoll@users.noreply.github.com> Richard Knoll <riknoll@microsoft.com>
|
||||
Rowan Wyborn <rwyborn@internode.on.net>
|
||||
Ryan Cavanaugh <RyanCavanaugh@users.noreply.github.com> Ryan Cavanaugh <ryan.cavanaugh@microsoft.com> Ryan Cavanaugh <ryanca@microsoft.com>
|
||||
Ryohei Ikegami <iofg2100@gmail.com>
|
||||
Sarangan Rajamanickam <sarajama@microsoft.com>
|
||||
Sébastien Arod <sebastien.arod@gmail.com>
|
||||
Sheetal Nandi <shkamat@microsoft.com>
|
||||
Shengping Zhong <zhongsp@users.noreply.github.com>
|
||||
shyyko.serhiy@gmail.com <shyyko.serhiy@gmail.com> # Shyyko Serhiy
|
||||
Simon Hürlimann <simon.huerlimann@cyt.ch>
|
||||
Solal Pirelli <solal.pirelli@gmail.com>
|
||||
Stan Thomas <stmsdn@norvil.net>
|
||||
Stanislav Sysoev <d4rkr00t@gmail.com>
|
||||
Steve Lucco <steveluc@users.noreply.github.com> steveluc <steveluc@microsoft.com>
|
||||
Tarik <tarik@pushmote.com> # Tarik Ozket
|
||||
Tien Nguyen <tihoanh@microsoft.com> tien <hoanhtien@users.noreply.github.com> unknown <tihoanh@microsoft.com> #Tien Hoanhtien
|
||||
Tim Perry <pimterry@gmail.com>
|
||||
Tim Viiding-Spader <viispade@users.noreply.github.com>
|
||||
Tingan Ho <tingan87@gmail.com>
|
||||
togru <v3nomzxgt8@gmail.com> # togru
|
||||
Tomas Grubliauskas <tgrubliauskas@gmail.com>
|
||||
ToddThomson <achilles@telus.net> # Todd Thomson
|
||||
TruongSinh Tran-Nguyen <i@truongsinh.pro>
|
||||
vilicvane <i@vilic.info> # Vilic Vane
|
||||
Vladimir Matveev <vladima@microsoft.com> vladima <vladima@microsoft.com> v2m <desco.by@gmail.com>
|
||||
Wesley Wigham <t-weswig@microsoft.com> Wesley Wigham <wwigham@gmail.com>
|
||||
York Yao <plantain-00@users.noreply.github.com> york yao <yaoao12306@outlook.com> yaoyao <yaoyao12306@163.com>
|
||||
Yuichi Nukiyama <oscar.wilde84@hotmail.co.jp> YuichiNukiyama <oscar.wilde84@hotmail.co.jp>
|
||||
Zev Spitz <shivisi@etrog.net.il>
|
||||
Zhengbo Li <zhengbli@microsoft.com> zhengbli <zhengbli@microsoft.com> Zhengbo Li <Zhengbo Li> Zhengbo Li <zhengbli@mirosoft.com> tinza123 <li.zhengbo@outlook.com> unknown <zhengbli@zhengblit430.redmond.corp.microsoft.com> Zhengbo Li <Zhengbo Li>
|
||||
zhongsp <patrick.zhongsp@gmail.com> # Patrick Zhong
|
||||
T18970237136 <T18970237136@users.noreply.github.com> # @T18970237136
|
||||
JBerger <JBerger@melco.com>
|
||||
110
AUTHORS.md
110
AUTHORS.md
@ -1,105 +1,141 @@
|
||||
TypeScript is authored by:
|
||||
|
||||
* Abubaker Bashir
|
||||
* Adam Freidin
|
||||
* Ahmad Farid
|
||||
* Akshar Patel
|
||||
* Adi Dahiya
|
||||
* Ahmad Farid
|
||||
* Alex Eagle
|
||||
* Alexander Kuvaev
|
||||
* Anders Hejlsberg
|
||||
* Andrew Z Allen
|
||||
* Andy Hanson
|
||||
* Anil Anar
|
||||
* Anton Tolmachev
|
||||
* Arnav Singh
|
||||
* Arthur Ozga
|
||||
* Asad Saeeduddin
|
||||
* Basarat Ali Syed
|
||||
* Avery Morin
|
||||
* Basarat Ali Syed
|
||||
* Ben Duffield
|
||||
* Bill Ticehurst
|
||||
* Bill Ticehurst
|
||||
* Blake Embrey
|
||||
* Bowden Kelly
|
||||
* Brett Mayen
|
||||
* Bryan Forbes
|
||||
* Caitlin Potter
|
||||
* Bryan Forbes
|
||||
* Caitlin Potter
|
||||
* Chris Bubernak
|
||||
* Colby Russell
|
||||
* Chuck Jazdzewski
|
||||
* Colby Russell
|
||||
* Colin Snover
|
||||
* Cyrus Najmabadi
|
||||
* Dan Corder
|
||||
* Dan Quirk
|
||||
* Dan Quirk
|
||||
* Daniel Rosenwasser
|
||||
* @dashaus
|
||||
* David Li
|
||||
* David Li
|
||||
* David Souther
|
||||
* Denis Nedelyaev
|
||||
* Dick van den Brink
|
||||
* Dirk Bäumer
|
||||
* Dirk Holtwick
|
||||
* Doug Ilijev
|
||||
* Erik Edrosa
|
||||
* Ethan Rubio
|
||||
* Evan Martin
|
||||
* Evan Sebastian
|
||||
* Eyas Sharaiha
|
||||
* @falsandtru
|
||||
* Frank Wallis
|
||||
* Frank Wallis
|
||||
* František Žiačik
|
||||
* Gabriel Isenberg
|
||||
* Gilad Peleg
|
||||
* Gilad Peleg
|
||||
* Graeme Wicksted
|
||||
* Guillaume Salles
|
||||
* Guillaume Salles
|
||||
* Guy Bedford
|
||||
* Harald Niesche
|
||||
* Herrington Darkholme
|
||||
* Iain Monro
|
||||
* Ingvar Stepanyan
|
||||
* Ivo Gabe de Wolff
|
||||
* James Whitney
|
||||
* Isiah Meadows
|
||||
* Ivo Gabe de Wolff
|
||||
* James Whitney
|
||||
* Jason Freeman
|
||||
* Jason Killian
|
||||
* Jason Ramsay
|
||||
* Jason Ramsay
|
||||
* JBerger
|
||||
* Jed Mao
|
||||
* Jeffrey Morlan
|
||||
* Johannes Rieken
|
||||
* Jesse Schalken
|
||||
* Jiri Tobisek
|
||||
* Johannes Rieken
|
||||
* John Vilk
|
||||
* Jonathan Bond-Caron
|
||||
* Jonathan Park
|
||||
* Jonathan Toland
|
||||
* Jonathan Turner
|
||||
* Jonathon Smith
|
||||
* Josh Kalderimis
|
||||
* Josh Soref
|
||||
* Juan Luis Boya García
|
||||
* Julian Williams
|
||||
* Kagami Sascha Rosylight
|
||||
* Kanchalai Tanglertsampan
|
||||
* Keith Mashinter
|
||||
* Ken Howard
|
||||
* Kenji Imamula
|
||||
* Lorant Pinter
|
||||
* Kyle Kelley
|
||||
* Lorant Pinter
|
||||
* Lucien Greathouse
|
||||
* Martin Všetička
|
||||
* Martin Vseticka
|
||||
* Masahiro Wakame
|
||||
* Mattias Buelens
|
||||
* Matt McCutchen
|
||||
* Max Deepfield
|
||||
* Micah Zoltu
|
||||
* Mohamed Hegazy
|
||||
* Micah Zoltu
|
||||
* Mohamed Hegazy
|
||||
* Nathan Shively-Sanders
|
||||
* Nathan Yee
|
||||
* Nima Zahedi
|
||||
* Noj Vek
|
||||
* Oleg Mihailik
|
||||
* Oleksandr Chekhovskyi
|
||||
* Paul van Brenk
|
||||
* Oleksandr Chekhovskyi
|
||||
* Oskar Segersva¨rd
|
||||
* Patrick Zhong
|
||||
* Paul van Brenk
|
||||
* @pcbro
|
||||
* Pedro Maltez
|
||||
* Pedro Maltez
|
||||
* Philip Bulley
|
||||
* piloopin
|
||||
* Piero Cangianiello
|
||||
* @piloopin
|
||||
* Prayag Verma
|
||||
* @progre
|
||||
* Punya Biswal
|
||||
* Richard Sentino
|
||||
* Ron Buckton
|
||||
* Rado Kirov
|
||||
* Richard Knoll
|
||||
* Ron Buckton
|
||||
* Rowan Wyborn
|
||||
* Ryan Cavanaugh
|
||||
* Ryan Cavanaugh
|
||||
* Ryohei Ikegami
|
||||
* Sébastien Arod
|
||||
* Sarangan Rajamanickam
|
||||
* Sheetal Nandi
|
||||
* Shengping Zhong
|
||||
* Shyyko Serhiy
|
||||
* Simon Hürlimann
|
||||
* Solal Pirelli
|
||||
* Stan Thomas
|
||||
* Stanislav Sysoev
|
||||
* Steve Lucco
|
||||
* Thomas Loubiou
|
||||
* Sébastien Arod
|
||||
* @T18970237136
|
||||
* Tarik Ozket
|
||||
* Tien Hoanhtien
|
||||
* Tim Perry
|
||||
* Tim Viiding-Spader
|
||||
* Tingan Ho
|
||||
* Todd Thomson
|
||||
* togru
|
||||
* Tomas Grubliauskas
|
||||
* TruongSinh Tran-Nguyen
|
||||
* Viliv Vane
|
||||
* Vilic Vane
|
||||
* Vladimir Matveev
|
||||
* Wesley Wigham
|
||||
* York Yao
|
||||
* Yui Tanglertsampan
|
||||
* Yuichi Nukiyama
|
||||
* Zev Spitz
|
||||
* Zhengbo Li
|
||||
* Zev Spitz
|
||||
* Zhengbo Li
|
||||
3985
lib/lib.d.ts
vendored
3985
lib/lib.d.ts
vendored
File diff suppressed because it is too large
Load Diff
3936
lib/lib.dom.d.ts
vendored
3936
lib/lib.dom.d.ts
vendored
File diff suppressed because it is too large
Load Diff
36
lib/lib.es5.d.ts
vendored
36
lib/lib.es5.d.ts
vendored
@ -987,7 +987,7 @@ interface JSON {
|
||||
/**
|
||||
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
|
||||
* @param value A JavaScript value, usually an object or array, to be converted.
|
||||
* @param replacer An array of strings and numbers that acts as a white list for selecting the object properties that will be stringified.
|
||||
* @param replacer An array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified.
|
||||
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
|
||||
*/
|
||||
stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
|
||||
@ -1271,33 +1271,13 @@ declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | P
|
||||
|
||||
interface PromiseLike<T> {
|
||||
/**
|
||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
||||
* @param onrejected The callback to execute when the Promise is rejected.
|
||||
* @returns A Promise for the completion of which ever callback is executed.
|
||||
*/
|
||||
then<TResult1, TResult2>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
|
||||
|
||||
/**
|
||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
||||
* @param onrejected The callback to execute when the Promise is rejected.
|
||||
* @returns A Promise for the completion of which ever callback is executed.
|
||||
*/
|
||||
then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
|
||||
|
||||
/**
|
||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
||||
* @returns A Promise for the completion of which ever callback is executed.
|
||||
*/
|
||||
then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
|
||||
|
||||
/**
|
||||
* Creates a new Promise with the same internal state of this Promise.
|
||||
* @returns A Promise.
|
||||
*/
|
||||
then(): PromiseLike<T>;
|
||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
||||
* @param onrejected The callback to execute when the Promise is rejected.
|
||||
* @returns A Promise for the completion of which ever callback is executed.
|
||||
*/
|
||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
|
||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
|
||||
}
|
||||
|
||||
interface ArrayLike<T> {
|
||||
|
||||
3985
lib/lib.es6.d.ts
vendored
3985
lib/lib.es6.d.ts
vendored
File diff suppressed because it is too large
Load Diff
13
lib/lib.scripthost.d.ts
vendored
13
lib/lib.scripthost.d.ts
vendored
@ -292,3 +292,16 @@ interface VBArrayConstructor {
|
||||
}
|
||||
|
||||
declare var VBArray: VBArrayConstructor;
|
||||
|
||||
/**
|
||||
* Automation date (VT_DATE)
|
||||
*/
|
||||
interface VarDate { }
|
||||
|
||||
interface DateConstructor {
|
||||
new (vd: VarDate): Date;
|
||||
}
|
||||
|
||||
interface Date {
|
||||
getVarDate: () => VarDate;
|
||||
}
|
||||
|
||||
166
lib/lib.webworker.d.ts
vendored
166
lib/lib.webworker.d.ts
vendored
@ -358,8 +358,8 @@ declare var IDBCursorWithValue: {
|
||||
interface IDBDatabase extends EventTarget {
|
||||
readonly name: string;
|
||||
readonly objectStoreNames: DOMStringList;
|
||||
onabort: (ev: Event) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onabort: (this: this, ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
version: number;
|
||||
onversionchange: (ev: IDBVersionChangeEvent) => any;
|
||||
close(): void;
|
||||
@ -367,8 +367,8 @@ interface IDBDatabase extends EventTarget {
|
||||
deleteObjectStore(name: string): void;
|
||||
transaction(storeNames: string | string[], mode?: string): IDBTransaction;
|
||||
addEventListener(type: "versionchange", listener: (ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -446,12 +446,12 @@ declare var IDBObjectStore: {
|
||||
}
|
||||
|
||||
interface IDBOpenDBRequest extends IDBRequest {
|
||||
onblocked: (ev: Event) => any;
|
||||
onupgradeneeded: (ev: IDBVersionChangeEvent) => any;
|
||||
addEventListener(type: "blocked", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "upgradeneeded", listener: (ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void;
|
||||
onblocked: (this: this, ev: Event) => any;
|
||||
onupgradeneeded: (this: this, ev: IDBVersionChangeEvent) => any;
|
||||
addEventListener(type: "blocked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "success", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "upgradeneeded", listener: (this: this, ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -462,14 +462,14 @@ declare var IDBOpenDBRequest: {
|
||||
|
||||
interface IDBRequest extends EventTarget {
|
||||
readonly error: DOMError;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onsuccess: (ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
onsuccess: (this: this, ev: Event) => any;
|
||||
readonly readyState: string;
|
||||
readonly result: any;
|
||||
source: IDBObjectStore | IDBIndex | IDBCursor;
|
||||
readonly transaction: IDBTransaction;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "success", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -482,17 +482,17 @@ interface IDBTransaction extends EventTarget {
|
||||
readonly db: IDBDatabase;
|
||||
readonly error: DOMError;
|
||||
readonly mode: string;
|
||||
onabort: (ev: Event) => any;
|
||||
oncomplete: (ev: Event) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onabort: (this: this, ev: Event) => any;
|
||||
oncomplete: (this: this, ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
abort(): void;
|
||||
objectStore(name: string): IDBObjectStore;
|
||||
readonly READ_ONLY: string;
|
||||
readonly READ_WRITE: string;
|
||||
readonly VERSION_CHANGE: string;
|
||||
addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -551,16 +551,16 @@ declare var MSApp: MSApp;
|
||||
|
||||
interface MSAppAsyncOperation extends EventTarget {
|
||||
readonly error: DOMError;
|
||||
oncomplete: (ev: Event) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
oncomplete: (this: this, ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
readonly readyState: number;
|
||||
readonly result: any;
|
||||
start(): void;
|
||||
readonly COMPLETED: number;
|
||||
readonly ERROR: number;
|
||||
readonly STARTED: number;
|
||||
addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -644,11 +644,11 @@ declare var MessageEvent: {
|
||||
}
|
||||
|
||||
interface MessagePort extends EventTarget {
|
||||
onmessage: (ev: MessageEvent) => any;
|
||||
onmessage: (this: this, ev: MessageEvent) => any;
|
||||
close(): void;
|
||||
postMessage(message?: any, ports?: any): void;
|
||||
start(): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -700,10 +700,10 @@ interface WebSocket extends EventTarget {
|
||||
binaryType: string;
|
||||
readonly bufferedAmount: number;
|
||||
readonly extensions: string;
|
||||
onclose: (ev: CloseEvent) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onmessage: (ev: MessageEvent) => any;
|
||||
onopen: (ev: Event) => any;
|
||||
onclose: (this: this, ev: CloseEvent) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
onmessage: (this: this, ev: MessageEvent) => any;
|
||||
onopen: (this: this, ev: Event) => any;
|
||||
readonly protocol: string;
|
||||
readonly readyState: number;
|
||||
readonly url: string;
|
||||
@ -713,10 +713,10 @@ interface WebSocket extends EventTarget {
|
||||
readonly CLOSING: number;
|
||||
readonly CONNECTING: number;
|
||||
readonly OPEN: number;
|
||||
addEventListener(type: "close", listener: (ev: CloseEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "open", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "close", listener: (this: this, ev: CloseEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "open", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -730,11 +730,11 @@ declare var WebSocket: {
|
||||
}
|
||||
|
||||
interface Worker extends EventTarget, AbstractWorker {
|
||||
onmessage: (ev: MessageEvent) => any;
|
||||
onmessage: (this: this, ev: MessageEvent) => any;
|
||||
postMessage(message: any, ports?: any): void;
|
||||
terminate(): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -744,7 +744,7 @@ declare var Worker: {
|
||||
}
|
||||
|
||||
interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget {
|
||||
onreadystatechange: (ev: ProgressEvent) => any;
|
||||
onreadystatechange: (this: this, ev: ProgressEvent) => any;
|
||||
readonly readyState: number;
|
||||
readonly response: any;
|
||||
readonly responseText: string;
|
||||
@ -770,14 +770,14 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget {
|
||||
readonly LOADING: number;
|
||||
readonly OPENED: number;
|
||||
readonly UNSENT: number;
|
||||
addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "readystatechange", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "timeout", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -802,30 +802,30 @@ declare var XMLHttpRequestUpload: {
|
||||
}
|
||||
|
||||
interface AbstractWorker {
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
interface MSBaseReader {
|
||||
onabort: (ev: Event) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onload: (ev: Event) => any;
|
||||
onloadend: (ev: ProgressEvent) => any;
|
||||
onloadstart: (ev: Event) => any;
|
||||
onprogress: (ev: ProgressEvent) => any;
|
||||
onabort: (this: this, ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
onload: (this: this, ev: Event) => any;
|
||||
onloadend: (this: this, ev: ProgressEvent) => any;
|
||||
onloadstart: (this: this, ev: Event) => any;
|
||||
onprogress: (this: this, ev: ProgressEvent) => any;
|
||||
readonly readyState: number;
|
||||
readonly result: any;
|
||||
abort(): void;
|
||||
readonly DONE: number;
|
||||
readonly EMPTY: number;
|
||||
readonly LOADING: number;
|
||||
addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -854,20 +854,20 @@ interface WindowConsole {
|
||||
}
|
||||
|
||||
interface XMLHttpRequestEventTarget {
|
||||
onabort: (ev: Event) => any;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onload: (ev: Event) => any;
|
||||
onloadend: (ev: ProgressEvent) => any;
|
||||
onloadstart: (ev: Event) => any;
|
||||
onprogress: (ev: ProgressEvent) => any;
|
||||
ontimeout: (ev: ProgressEvent) => any;
|
||||
addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
onabort: (this: this, ev: Event) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
onload: (this: this, ev: Event) => any;
|
||||
onloadend: (this: this, ev: ProgressEvent) => any;
|
||||
onloadstart: (this: this, ev: Event) => any;
|
||||
onprogress: (this: this, ev: ProgressEvent) => any;
|
||||
ontimeout: (this: this, ev: ProgressEvent) => any;
|
||||
addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "timeout", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -885,13 +885,13 @@ declare var FileReaderSync: {
|
||||
|
||||
interface WorkerGlobalScope extends EventTarget, WorkerUtils, DedicatedWorkerGlobalScope, WindowConsole {
|
||||
readonly location: WorkerLocation;
|
||||
onerror: (ev: ErrorEvent) => any;
|
||||
onerror: (this: this, ev: ErrorEvent) => any;
|
||||
readonly self: WorkerGlobalScope;
|
||||
close(): void;
|
||||
msWriteProfilerMark(profilerMarkName: string): void;
|
||||
toString(): string;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -927,9 +927,9 @@ declare var WorkerNavigator: {
|
||||
}
|
||||
|
||||
interface DedicatedWorkerGlobalScope {
|
||||
onmessage: (ev: MessageEvent) => any;
|
||||
onmessage: (this: this, ev: MessageEvent) => any;
|
||||
postMessage(data: any): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
@ -1185,7 +1185,7 @@ interface FunctionStringCallback {
|
||||
(data: string): void;
|
||||
}
|
||||
declare var location: WorkerLocation;
|
||||
declare var onerror: (ev: ErrorEvent) => any;
|
||||
declare var onerror: (this: WorkerGlobalScope, ev: ErrorEvent) => any;
|
||||
declare var self: WorkerGlobalScope;
|
||||
declare function close(): void;
|
||||
declare function msWriteProfilerMark(profilerMarkName: string): void;
|
||||
@ -1208,11 +1208,11 @@ declare function setTimeout(handler: (...args: any[]) => void, timeout: number):
|
||||
declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number;
|
||||
declare function atob(encodedString: string): string;
|
||||
declare function btoa(rawString: string): string;
|
||||
declare var onmessage: (ev: MessageEvent) => any;
|
||||
declare var onmessage: (this: WorkerGlobalScope, ev: MessageEvent) => any;
|
||||
declare function postMessage(data: any): void;
|
||||
declare var console: Console;
|
||||
declare function addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
declare function addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
declare function addEventListener(type: "error", listener: (this: WorkerGlobalScope, ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
declare function addEventListener(type: "message", listener: (this: WorkerGlobalScope, ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
type AlgorithmIdentifier = string | Algorithm;
|
||||
type IDBKeyPath = string;
|
||||
|
||||
385
lib/tsc.js
385
lib/tsc.js
@ -960,13 +960,12 @@ var ts;
|
||||
var includeBasePaths = [];
|
||||
for (var _i = 0, includes_1 = includes; _i < includes_1.length; _i++) {
|
||||
var include = includes_1[_i];
|
||||
if (isRootedDiskPath(include)) {
|
||||
var wildcardOffset = indexOfAnyCharCode(include, wildcardCharCodes);
|
||||
var includeBasePath = wildcardOffset < 0
|
||||
? removeTrailingDirectorySeparator(getDirectoryPath(include))
|
||||
: include.substring(0, include.lastIndexOf(ts.directorySeparator, wildcardOffset));
|
||||
includeBasePaths.push(includeBasePath);
|
||||
}
|
||||
var absolute = isRootedDiskPath(include) ? include : normalizePath(combinePaths(path, include));
|
||||
var wildcardOffset = indexOfAnyCharCode(absolute, wildcardCharCodes);
|
||||
var includeBasePath = wildcardOffset < 0
|
||||
? removeTrailingDirectorySeparator(getDirectoryPath(absolute))
|
||||
: absolute.substring(0, absolute.lastIndexOf(ts.directorySeparator, wildcardOffset));
|
||||
includeBasePaths.push(includeBasePath);
|
||||
}
|
||||
includeBasePaths.sort(useCaseSensitiveFileNames ? compareStrings : compareStringsCaseInsensitive);
|
||||
include: for (var i = 0; i < includeBasePaths.length; i++) {
|
||||
@ -2166,6 +2165,7 @@ var ts;
|
||||
Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character: { code: 5062, category: ts.DiagnosticCategory.Error, key: "Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character_5062", message: "Substitution '{0}' in pattern '{1}' in can have at most one '*' character" },
|
||||
Substitutions_for_pattern_0_should_be_an_array: { code: 5063, category: ts.DiagnosticCategory.Error, key: "Substitutions_for_pattern_0_should_be_an_array_5063", message: "Substitutions for pattern '{0}' should be an array." },
|
||||
Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2: { code: 5064, category: ts.DiagnosticCategory.Error, key: "Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2_5064", message: "Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'." },
|
||||
File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0: { code: 5065, category: ts.DiagnosticCategory.Error, key: "File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildca_5065", message: "File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'." },
|
||||
Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate_and_emit_output_to_single_file_6001", message: "Concatenate and emit output to single file." },
|
||||
Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_d_ts_file_6002", message: "Generates corresponding '.d.ts' file." },
|
||||
Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specify the location where debugger should locate map files instead of generated locations." },
|
||||
@ -2284,6 +2284,8 @@ var ts;
|
||||
_0_is_declared_but_never_used: { code: 6133, category: ts.DiagnosticCategory.Error, key: "_0_is_declared_but_never_used_6133", message: "'{0}' is declared but never used." },
|
||||
Report_Errors_on_Unused_Locals: { code: 6134, category: ts.DiagnosticCategory.Message, key: "Report_Errors_on_Unused_Locals_6134", message: "Report Errors on Unused Locals." },
|
||||
Report_Errors_on_Unused_Parameters: { code: 6135, category: ts.DiagnosticCategory.Message, key: "Report_Errors_on_Unused_Parameters_6135", message: "Report Errors on Unused Parameters." },
|
||||
The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files: { code: 6136, category: ts.DiagnosticCategory.Message, key: "The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files_6136", message: "The maximum dependency depth to search under node_modules and load JavaScript files" },
|
||||
No_types_specified_in_package_json_but_allowJs_is_set_so_returning_main_value_of_0: { code: 6137, category: ts.DiagnosticCategory.Message, key: "No_types_specified_in_package_json_but_allowJs_is_set_so_returning_main_value_of_0_6137", message: "No types specified in 'package.json' but 'allowJs' is set, so returning 'main' value of '{0}'" },
|
||||
Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable_0_implicitly_has_an_1_type_7005", message: "Variable '{0}' implicitly has an '{1}' type." },
|
||||
Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter_0_implicitly_has_an_1_type_7006", message: "Parameter '{0}' implicitly has an '{1}' type." },
|
||||
Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member_0_implicitly_has_an_1_type_7008", message: "Member '{0}' implicitly has an '{1}' type." },
|
||||
@ -2582,6 +2584,10 @@ var ts;
|
||||
ts.getLineAndCharacterOfPosition = getLineAndCharacterOfPosition;
|
||||
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
function isWhiteSpace(ch) {
|
||||
return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);
|
||||
}
|
||||
ts.isWhiteSpace = isWhiteSpace;
|
||||
function isWhiteSpaceSingleLine(ch) {
|
||||
return ch === 32 ||
|
||||
ch === 9 ||
|
||||
ch === 11 ||
|
||||
@ -2595,7 +2601,7 @@ var ts;
|
||||
ch === 12288 ||
|
||||
ch === 65279;
|
||||
}
|
||||
ts.isWhiteSpace = isWhiteSpace;
|
||||
ts.isWhiteSpaceSingleLine = isWhiteSpaceSingleLine;
|
||||
function isLineBreak(ch) {
|
||||
return ch === 10 ||
|
||||
ch === 13 ||
|
||||
@ -2696,7 +2702,7 @@ var ts;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (ch > 127 && (isWhiteSpace(ch) || isLineBreak(ch))) {
|
||||
if (ch > 127 && (isWhiteSpace(ch))) {
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
@ -2817,7 +2823,7 @@ var ts;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (ch > 127 && (isWhiteSpace(ch) || isLineBreak(ch))) {
|
||||
if (ch > 127 && (isWhiteSpace(ch))) {
|
||||
if (result && result.length && isLineBreak(ch)) {
|
||||
ts.lastOrUndefined(result).hasTrailingNewLine = true;
|
||||
}
|
||||
@ -2900,6 +2906,7 @@ var ts;
|
||||
scanJsxToken: scanJsxToken,
|
||||
scanJSDocToken: scanJSDocToken,
|
||||
scan: scan,
|
||||
getText: getText,
|
||||
setText: setText,
|
||||
setScriptTarget: setScriptTarget,
|
||||
setLanguageVariant: setLanguageVariant,
|
||||
@ -3265,7 +3272,7 @@ var ts;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
while (pos < end && isWhiteSpace(text.charCodeAt(pos))) {
|
||||
while (pos < end && isWhiteSpaceSingleLine(text.charCodeAt(pos))) {
|
||||
pos++;
|
||||
}
|
||||
return token = 5;
|
||||
@ -3564,7 +3571,7 @@ var ts;
|
||||
}
|
||||
return token = getIdentifierToken();
|
||||
}
|
||||
else if (isWhiteSpace(ch)) {
|
||||
else if (isWhiteSpaceSingleLine(ch)) {
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
@ -3705,7 +3712,7 @@ var ts;
|
||||
var ch = text.charCodeAt(pos);
|
||||
while (pos < end) {
|
||||
ch = text.charCodeAt(pos);
|
||||
if (isWhiteSpace(ch)) {
|
||||
if (isWhiteSpaceSingleLine(ch)) {
|
||||
pos++;
|
||||
}
|
||||
else {
|
||||
@ -3792,6 +3799,9 @@ var ts;
|
||||
function tryScan(callback) {
|
||||
return speculationHelper(callback, false);
|
||||
}
|
||||
function getText() {
|
||||
return text;
|
||||
}
|
||||
function setText(newText, start, length) {
|
||||
text = newText || "";
|
||||
end = length === undefined ? text.length : start + length;
|
||||
@ -5720,7 +5730,7 @@ var ts;
|
||||
var sourceFiles = targetSourceFile === undefined ? host.getSourceFiles() : [targetSourceFile];
|
||||
for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) {
|
||||
var sourceFile = sourceFiles_1[_i];
|
||||
if (!isDeclarationFile(sourceFile)) {
|
||||
if (!isDeclarationFile(sourceFile) && !host.isSourceFileFromExternalLibrary(sourceFile)) {
|
||||
onSingleFileEmit(host, sourceFile);
|
||||
}
|
||||
}
|
||||
@ -5746,10 +5756,10 @@ var ts;
|
||||
action(emitFileNames, [sourceFile], false);
|
||||
}
|
||||
function onBundledEmit(host) {
|
||||
var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) {
|
||||
return !isDeclarationFile(sourceFile)
|
||||
&& (!ts.isExternalModule(sourceFile) || !!getEmitModuleKind(options));
|
||||
});
|
||||
var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) &&
|
||||
!host.isSourceFileFromExternalLibrary(sourceFile) &&
|
||||
(!ts.isExternalModule(sourceFile) ||
|
||||
!!getEmitModuleKind(options)); });
|
||||
if (bundledSources.length) {
|
||||
var jsFilePath = options.outFile || options.out;
|
||||
var emitFileNames = {
|
||||
@ -5974,7 +5984,7 @@ var ts;
|
||||
}
|
||||
function calculateIndent(text, pos, end) {
|
||||
var currentLineIndent = 0;
|
||||
for (; pos < end && ts.isWhiteSpace(text.charCodeAt(pos)); pos++) {
|
||||
for (; pos < end && ts.isWhiteSpaceSingleLine(text.charCodeAt(pos)); pos++) {
|
||||
if (text.charCodeAt(pos) === 9) {
|
||||
currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize());
|
||||
}
|
||||
@ -7200,12 +7210,12 @@ var ts;
|
||||
if (token === 82) {
|
||||
nextToken();
|
||||
if (token === 77) {
|
||||
return lookAhead(nextTokenIsClassOrFunction);
|
||||
return lookAhead(nextTokenIsClassOrFunctionOrAsync);
|
||||
}
|
||||
return token !== 37 && token !== 116 && token !== 15 && canFollowModifier();
|
||||
}
|
||||
if (token === 77) {
|
||||
return nextTokenIsClassOrFunction();
|
||||
return nextTokenIsClassOrFunctionOrAsync();
|
||||
}
|
||||
if (token === 113) {
|
||||
nextToken();
|
||||
@ -7223,9 +7233,10 @@ var ts;
|
||||
|| token === 22
|
||||
|| isLiteralPropertyName();
|
||||
}
|
||||
function nextTokenIsClassOrFunction() {
|
||||
function nextTokenIsClassOrFunctionOrAsync() {
|
||||
nextToken();
|
||||
return token === 73 || token === 87;
|
||||
return token === 73 || token === 87 ||
|
||||
(token === 118 && lookAhead(nextTokenIsFunctionKeywordOnSameLine));
|
||||
}
|
||||
function isListElement(parsingContext, inErrorRecovery) {
|
||||
var node = currentNode(parsingContext);
|
||||
@ -11645,6 +11656,9 @@ var ts;
|
||||
case 227:
|
||||
bindCaseBlock(node);
|
||||
break;
|
||||
case 249:
|
||||
bindCaseClause(node);
|
||||
break;
|
||||
case 214:
|
||||
bindLabeledStatement(node);
|
||||
break;
|
||||
@ -12045,6 +12059,13 @@ var ts;
|
||||
}
|
||||
}
|
||||
}
|
||||
function bindCaseClause(node) {
|
||||
var saveCurrentFlow = currentFlow;
|
||||
currentFlow = preSwitchCaseFlow;
|
||||
bind(node.expression);
|
||||
currentFlow = saveCurrentFlow;
|
||||
ts.forEach(node.statements, bind);
|
||||
}
|
||||
function pushActiveLabel(name, breakTarget, continueTarget) {
|
||||
var activeLabel = {
|
||||
name: name,
|
||||
@ -13018,6 +13039,7 @@ var ts;
|
||||
var compilerOptions = host.getCompilerOptions();
|
||||
var languageVersion = compilerOptions.target || 0;
|
||||
var modulekind = ts.getEmitModuleKind(compilerOptions);
|
||||
var noUnusedIdentifiers = !!compilerOptions.noUnusedLocals || !!compilerOptions.noUnusedParameters;
|
||||
var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ts.ModuleKind.System;
|
||||
var strictNullChecks = compilerOptions.strictNullChecks;
|
||||
var emitResolver = createResolver();
|
||||
@ -13124,6 +13146,7 @@ var ts;
|
||||
var getGlobalThenableType;
|
||||
var jsxElementClassType;
|
||||
var deferredNodes;
|
||||
var deferredUnusedIdentifierNodes;
|
||||
var flowLoopStart = 0;
|
||||
var flowLoopCount = 0;
|
||||
var visitedFlowCount = 0;
|
||||
@ -13604,6 +13627,9 @@ var ts;
|
||||
lastLocation = location;
|
||||
location = location.parent;
|
||||
}
|
||||
if (result && nameNotFoundMessage && noUnusedIdentifiers) {
|
||||
result.isReferenced = true;
|
||||
}
|
||||
if (!result) {
|
||||
result = getSymbol(globals, name, meaning);
|
||||
}
|
||||
@ -19662,20 +19688,8 @@ var ts;
|
||||
}
|
||||
return container === declarationContainer;
|
||||
}
|
||||
function updateReferencesForInterfaceHeritiageClauseTargets(node) {
|
||||
var extendedTypeNode = ts.getClassExtendsHeritageClauseElement(node);
|
||||
if (extendedTypeNode) {
|
||||
var t = getTypeFromTypeNode(extendedTypeNode);
|
||||
if (t !== unknownType && t.symbol && (compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
t.symbol.hasReference = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
function checkIdentifier(node) {
|
||||
var symbol = getResolvedSymbol(node);
|
||||
if (symbol && (compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
symbol.hasReference = true;
|
||||
}
|
||||
if (symbol === argumentsSymbol) {
|
||||
var container = ts.getContainingFunction(node);
|
||||
if (container.kind === 180) {
|
||||
@ -21011,8 +21025,15 @@ var ts;
|
||||
}
|
||||
return unknownType;
|
||||
}
|
||||
if ((compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
prop.hasReference = true;
|
||||
if (noUnusedIdentifiers &&
|
||||
(prop.flags & 106500) &&
|
||||
prop.valueDeclaration && (prop.valueDeclaration.flags & 8)) {
|
||||
if (prop.flags & 16777216) {
|
||||
getSymbolLinks(prop).target.isReferenced = true;
|
||||
}
|
||||
else {
|
||||
prop.isReferenced = true;
|
||||
}
|
||||
}
|
||||
getNodeLinks(node).resolvedSymbol = prop;
|
||||
if (prop.parent && prop.parent.flags & 32) {
|
||||
@ -22283,8 +22304,7 @@ var ts;
|
||||
}
|
||||
}
|
||||
}
|
||||
checkUnusedIdentifiers(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
function checkArithmeticOperandType(operand, type, diagnostic) {
|
||||
@ -22566,6 +22586,10 @@ var ts;
|
||||
if (exprOrAssignment.kind === 254) {
|
||||
var prop = exprOrAssignment;
|
||||
if (prop.objectAssignmentInitializer) {
|
||||
if (strictNullChecks &&
|
||||
!(getCombinedTypeFlags(checkExpression(prop.objectAssignmentInitializer)) & 32)) {
|
||||
sourceType = getTypeWithFacts(sourceType, 131072);
|
||||
}
|
||||
checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper);
|
||||
}
|
||||
target = exprOrAssignment.name;
|
||||
@ -23151,8 +23175,8 @@ var ts;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var static = ts.forEach(member.modifiers, function (m) { return m.kind === 113; });
|
||||
var names = static ? staticNames : instanceNames;
|
||||
var isStatic = ts.forEach(member.modifiers, function (m) { return m.kind === 113; });
|
||||
var names = isStatic ? staticNames : instanceNames;
|
||||
var memberName = member.name && ts.getPropertyNameForPropertyNameNode(member.name);
|
||||
if (memberName) {
|
||||
switch (member.kind) {
|
||||
@ -23261,8 +23285,7 @@ var ts;
|
||||
checkSignatureDeclaration(node);
|
||||
checkGrammarConstructorTypeParameters(node) || checkGrammarConstructorTypeAnnotation(node);
|
||||
checkSourceElement(node.body);
|
||||
checkUnusedIdentifiers(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
var symbol = getSymbolOfNode(node);
|
||||
var firstDeclaration = ts.getDeclarationOfKind(symbol, node.kind);
|
||||
if (node === firstDeclaration) {
|
||||
@ -23373,6 +23396,7 @@ var ts;
|
||||
}
|
||||
if (node.parent.kind !== 171) {
|
||||
checkSourceElement(node.body);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
else {
|
||||
checkNodeDeferred(node);
|
||||
@ -23387,6 +23411,7 @@ var ts;
|
||||
}
|
||||
function checkAccessorDeferred(node) {
|
||||
checkSourceElement(node.body);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
function checkMissingDeclaration(node) {
|
||||
checkDecorators(node);
|
||||
@ -23412,9 +23437,6 @@ var ts;
|
||||
checkGrammarTypeArguments(node, node.typeArguments);
|
||||
var type = getTypeFromTypeReference(node);
|
||||
if (type !== unknownType) {
|
||||
if (type.symbol && (compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
type.symbol.hasReference = true;
|
||||
}
|
||||
if (node.typeArguments) {
|
||||
ts.forEach(node.typeArguments, checkSourceElement);
|
||||
if (produceDiagnostics) {
|
||||
@ -23951,8 +23973,6 @@ var ts;
|
||||
}
|
||||
}
|
||||
checkSourceElement(node.body);
|
||||
checkUnusedIdentifiers(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
if (!node.asteriskToken) {
|
||||
var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type));
|
||||
checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType);
|
||||
@ -23965,40 +23985,104 @@ var ts;
|
||||
getReturnTypeOfSignature(getSignatureFromDeclaration(node));
|
||||
}
|
||||
}
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
function checkUnusedIdentifiers(node) {
|
||||
if (node.parent.kind !== 222 && (compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
for (var key in node.locals) {
|
||||
if (ts.hasProperty(node.locals, key)) {
|
||||
var local = node.locals[key];
|
||||
if (!local.hasReference && local.valueDeclaration) {
|
||||
if (local.valueDeclaration.kind !== 142 && compilerOptions.noUnusedLocals) {
|
||||
error(local.valueDeclaration.name, ts.Diagnostics._0_is_declared_but_never_used, local.name);
|
||||
function registerForUnusedIdentifiersCheck(node) {
|
||||
if (deferredUnusedIdentifierNodes) {
|
||||
deferredUnusedIdentifierNodes.push(node);
|
||||
}
|
||||
}
|
||||
function checkUnusedIdentifiers() {
|
||||
if (deferredUnusedIdentifierNodes) {
|
||||
for (var _i = 0, deferredUnusedIdentifierNodes_1 = deferredUnusedIdentifierNodes; _i < deferredUnusedIdentifierNodes_1.length; _i++) {
|
||||
var node = deferredUnusedIdentifierNodes_1[_i];
|
||||
switch (node.kind) {
|
||||
case 256:
|
||||
case 225:
|
||||
checkUnusedModuleMembers(node);
|
||||
break;
|
||||
case 221:
|
||||
case 192:
|
||||
checkUnusedClassMembers(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
break;
|
||||
case 222:
|
||||
checkUnusedTypeParameters(node);
|
||||
break;
|
||||
case 199:
|
||||
case 227:
|
||||
case 206:
|
||||
case 207:
|
||||
case 208:
|
||||
checkUnusedLocalsAndParameters(node);
|
||||
break;
|
||||
case 148:
|
||||
case 179:
|
||||
case 220:
|
||||
case 180:
|
||||
case 147:
|
||||
case 149:
|
||||
case 150:
|
||||
if (node.body) {
|
||||
checkUnusedLocalsAndParameters(node);
|
||||
}
|
||||
else if (local.valueDeclaration.kind === 142 && compilerOptions.noUnusedParameters) {
|
||||
if (local.valueDeclaration.flags === 0) {
|
||||
error(local.valueDeclaration.name, ts.Diagnostics._0_is_declared_but_never_used, local.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkUnusedTypeParameters(node);
|
||||
break;
|
||||
case 146:
|
||||
case 151:
|
||||
case 152:
|
||||
case 153:
|
||||
case 156:
|
||||
case 157:
|
||||
checkUnusedTypeParameters(node);
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
function checkUnusedClassLocals(node) {
|
||||
function checkUnusedLocalsAndParameters(node) {
|
||||
if (node.parent.kind !== 222 && noUnusedIdentifiers && !ts.isInAmbientContext(node)) {
|
||||
var _loop_1 = function(key) {
|
||||
if (ts.hasProperty(node.locals, key)) {
|
||||
var local_1 = node.locals[key];
|
||||
if (!local_1.isReferenced) {
|
||||
if (local_1.valueDeclaration && local_1.valueDeclaration.kind === 142) {
|
||||
var parameter = local_1.valueDeclaration;
|
||||
if (compilerOptions.noUnusedParameters &&
|
||||
!ts.isParameterPropertyDeclaration(parameter) &&
|
||||
!parameterNameStartsWithUnderscore(parameter)) {
|
||||
error(local_1.valueDeclaration.name, ts.Diagnostics._0_is_declared_but_never_used, local_1.name);
|
||||
}
|
||||
}
|
||||
else if (compilerOptions.noUnusedLocals) {
|
||||
ts.forEach(local_1.declarations, function (d) { return error(d.name || d, ts.Diagnostics._0_is_declared_but_never_used, local_1.name); });
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
for (var key in node.locals) {
|
||||
_loop_1(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
function parameterNameStartsWithUnderscore(parameter) {
|
||||
return parameter.name && parameter.name.kind === 69 && parameter.name.text.charCodeAt(0) === 95;
|
||||
}
|
||||
function checkUnusedClassMembers(node) {
|
||||
if (compilerOptions.noUnusedLocals && !ts.isInAmbientContext(node)) {
|
||||
if (node.members) {
|
||||
for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
|
||||
var member = _a[_i];
|
||||
if (member.kind === 147 || member.kind === 145) {
|
||||
if (isPrivateNode(member) && !member.symbol.hasReference) {
|
||||
if (!member.symbol.isReferenced && member.flags & 8) {
|
||||
error(member.name, ts.Diagnostics._0_is_declared_but_never_used, member.symbol.name);
|
||||
}
|
||||
}
|
||||
else if (member.kind === 148) {
|
||||
for (var _b = 0, _c = member.parameters; _b < _c.length; _b++) {
|
||||
var parameter = _c[_b];
|
||||
if (isPrivateNode(parameter) && !parameter.symbol.hasReference) {
|
||||
if (!parameter.symbol.isReferenced && parameter.flags & 8) {
|
||||
error(parameter.name, ts.Diagnostics._0_is_declared_but_never_used, parameter.symbol.name);
|
||||
}
|
||||
}
|
||||
@ -24012,28 +24096,27 @@ var ts;
|
||||
if (node.typeParameters) {
|
||||
for (var _i = 0, _a = node.typeParameters; _i < _a.length; _i++) {
|
||||
var typeParameter = _a[_i];
|
||||
if (!typeParameter.symbol.hasReference) {
|
||||
if (!typeParameter.symbol.isReferenced) {
|
||||
error(typeParameter.name, ts.Diagnostics._0_is_declared_but_never_used, typeParameter.symbol.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function isPrivateNode(node) {
|
||||
return (node.flags & 8) !== 0;
|
||||
}
|
||||
function checkUnusedModuleLocals(node) {
|
||||
function checkUnusedModuleMembers(node) {
|
||||
if (compilerOptions.noUnusedLocals && !ts.isInAmbientContext(node)) {
|
||||
var _loop_1 = function(key) {
|
||||
for (var key in node.locals) {
|
||||
if (ts.hasProperty(node.locals, key)) {
|
||||
var local_1 = node.locals[key];
|
||||
if (!local_1.hasReference && !local_1.exportSymbol) {
|
||||
ts.forEach(local_1.declarations, function (d) { return error(d.name, ts.Diagnostics._0_is_declared_but_never_used, local_1.name); });
|
||||
var local = node.locals[key];
|
||||
if (!local.isReferenced && !local.exportSymbol) {
|
||||
for (var _i = 0, _a = local.declarations; _i < _a.length; _i++) {
|
||||
var declaration = _a[_i];
|
||||
if (!ts.isAmbientModule(declaration)) {
|
||||
error(declaration.name, ts.Diagnostics._0_is_declared_but_never_used, local.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
for (var key in node.locals) {
|
||||
_loop_1(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -24042,7 +24125,9 @@ var ts;
|
||||
checkGrammarStatementInAmbientContext(node);
|
||||
}
|
||||
ts.forEach(node.statements, checkSourceElement);
|
||||
checkUnusedIdentifiers(node);
|
||||
if (node.locals) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
function checkCollisionWithArgumentsInGeneratedCode(node) {
|
||||
if (!ts.hasDeclaredRestParameter(node) || ts.isInAmbientContext(node) || ts.nodeIsMissing(node.body)) {
|
||||
@ -24367,6 +24452,9 @@ var ts;
|
||||
if (node.incrementor)
|
||||
checkExpression(node.incrementor);
|
||||
checkSourceElement(node.statement);
|
||||
if (node.locals) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
function checkForOfStatement(node) {
|
||||
checkGrammarForInOrForOfStatement(node);
|
||||
@ -24388,7 +24476,9 @@ var ts;
|
||||
}
|
||||
}
|
||||
checkSourceElement(node.statement);
|
||||
checkUnusedIdentifiers(node);
|
||||
if (node.locals) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
function checkForInStatement(node) {
|
||||
checkGrammarForInOrForOfStatement(node);
|
||||
@ -24417,7 +24507,9 @@ var ts;
|
||||
error(node.expression, ts.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter);
|
||||
}
|
||||
checkSourceElement(node.statement);
|
||||
checkUnusedIdentifiers(node);
|
||||
if (node.locals) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
function checkForInOrForOfVariableDeclaration(iterationStatement) {
|
||||
var variableDeclarationList = iterationStatement.initializer;
|
||||
@ -24577,7 +24669,7 @@ var ts;
|
||||
}
|
||||
function isUnwrappedReturnTypeVoidOrAny(func, returnType) {
|
||||
var unwrappedReturnType = ts.isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType;
|
||||
return maybeTypeOfKind(unwrappedReturnType, 16 | 1);
|
||||
return unwrappedReturnType && maybeTypeOfKind(unwrappedReturnType, 16 | 1);
|
||||
}
|
||||
function checkReturnStatement(node) {
|
||||
if (!checkGrammarStatementInAmbientContext(node)) {
|
||||
@ -24659,6 +24751,9 @@ var ts;
|
||||
}
|
||||
ts.forEach(clause.statements, checkSourceElement);
|
||||
});
|
||||
if (node.caseBlock.locals) {
|
||||
registerForUnusedIdentifiersCheck(node.caseBlock);
|
||||
}
|
||||
}
|
||||
function checkLabeledStatement(node) {
|
||||
if (!checkGrammarStatementInAmbientContext(node)) {
|
||||
@ -24714,7 +24809,6 @@ var ts;
|
||||
}
|
||||
}
|
||||
checkBlock(catchClause.block);
|
||||
checkUnusedIdentifiers(catchClause);
|
||||
}
|
||||
if (node.finallyBlock) {
|
||||
checkBlock(node.finallyBlock);
|
||||
@ -24830,6 +24924,7 @@ var ts;
|
||||
}
|
||||
function checkClassExpressionDeferred(node) {
|
||||
ts.forEach(node.members, checkSourceElement);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
function checkClassDeclaration(node) {
|
||||
if (!node.name && !(node.flags & 512)) {
|
||||
@ -24837,8 +24932,7 @@ var ts;
|
||||
}
|
||||
checkClassLikeDeclaration(node);
|
||||
ts.forEach(node.members, checkSourceElement);
|
||||
checkUnusedClassLocals(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
function checkClassLikeDeclaration(node) {
|
||||
checkGrammarClassDeclarationHeritageClauses(node);
|
||||
@ -25079,7 +25173,6 @@ var ts;
|
||||
ts.forEach(node.members, checkSourceElement);
|
||||
if (produceDiagnostics) {
|
||||
checkTypeForDuplicateIndexSignatures(node);
|
||||
updateReferencesForInterfaceHeritiageClauseTargets(node);
|
||||
checkUnusedTypeParameters(node);
|
||||
}
|
||||
}
|
||||
@ -25400,7 +25493,9 @@ var ts;
|
||||
}
|
||||
if (node.body) {
|
||||
checkSourceElement(node.body);
|
||||
checkUnusedModuleLocals(node);
|
||||
if (!ts.isGlobalScopeAugmentation(node)) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
function checkModuleAugmentationElement(node, isGlobalAugmentation) {
|
||||
@ -25551,9 +25646,6 @@ var ts;
|
||||
if (target.flags & 793056) {
|
||||
checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0);
|
||||
}
|
||||
if ((compilerOptions.noUnusedLocals || compilerOptions.noUnusedParameters) && !ts.isInAmbientContext(node)) {
|
||||
target.hasReference = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -25840,12 +25932,17 @@ var ts;
|
||||
checkGrammarSourceFile(node);
|
||||
potentialThisCollisions.length = 0;
|
||||
deferredNodes = [];
|
||||
deferredUnusedIdentifierNodes = produceDiagnostics && noUnusedIdentifiers ? [] : undefined;
|
||||
ts.forEach(node.statements, checkSourceElement);
|
||||
if (ts.isExternalModule(node)) {
|
||||
checkUnusedModuleLocals(node);
|
||||
}
|
||||
checkDeferredNodes();
|
||||
if (ts.isExternalModule(node)) {
|
||||
registerForUnusedIdentifiersCheck(node);
|
||||
}
|
||||
if (!node.isDeclarationFile) {
|
||||
checkUnusedIdentifiers();
|
||||
}
|
||||
deferredNodes = undefined;
|
||||
deferredUnusedIdentifierNodes = undefined;
|
||||
if (ts.isExternalOrCommonJsModule(node)) {
|
||||
checkExternalModuleExports(node);
|
||||
}
|
||||
@ -32799,8 +32896,8 @@ var ts;
|
||||
emit(initializer);
|
||||
}
|
||||
write(";");
|
||||
tempIndex_1++;
|
||||
}
|
||||
tempIndex_1++;
|
||||
}
|
||||
else if (initializer) {
|
||||
writeLine();
|
||||
@ -35132,7 +35229,7 @@ var ts;
|
||||
}
|
||||
firstNonWhitespace = -1;
|
||||
}
|
||||
else if (!ts.isWhiteSpace(c)) {
|
||||
else if (!ts.isWhiteSpaceSingleLine(c)) {
|
||||
lastNonWhitespace = i;
|
||||
if (firstNonWhitespace === -1) {
|
||||
firstNonWhitespace = i;
|
||||
@ -35826,12 +35923,31 @@ var ts;
|
||||
}
|
||||
return typesFilePath;
|
||||
}
|
||||
if (state.compilerOptions.allowJs && jsonContent.main && typeof jsonContent.main === "string") {
|
||||
if (state.traceEnabled) {
|
||||
trace(state.host, ts.Diagnostics.No_types_specified_in_package_json_but_allowJs_is_set_so_returning_main_value_of_0, jsonContent.main);
|
||||
}
|
||||
var mainFilePath = ts.normalizePath(ts.combinePaths(baseDirectory, jsonContent.main));
|
||||
return mainFilePath;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
var typeReferenceExtensions = [".d.ts"];
|
||||
function getEffectiveTypeRoots(options, host) {
|
||||
return options.typeRoots ||
|
||||
ts.map(defaultTypeRoots, function (d) { return ts.combinePaths(options.configFilePath ? ts.getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d); });
|
||||
if (options.typeRoots) {
|
||||
return options.typeRoots;
|
||||
}
|
||||
var currentDirectory;
|
||||
if (options.configFilePath) {
|
||||
currentDirectory = ts.getDirectoryPath(options.configFilePath);
|
||||
}
|
||||
else if (host.getCurrentDirectory) {
|
||||
currentDirectory = host.getCurrentDirectory();
|
||||
}
|
||||
if (!currentDirectory) {
|
||||
return undefined;
|
||||
}
|
||||
return ts.map(defaultTypeRoots, function (d) { return ts.combinePaths(currentDirectory, d); });
|
||||
}
|
||||
function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host) {
|
||||
var traceEnabled = isTraceEnabled(options, host);
|
||||
@ -35861,7 +35977,7 @@ var ts;
|
||||
}
|
||||
}
|
||||
var failedLookupLocations = [];
|
||||
if (typeRoots.length) {
|
||||
if (typeRoots && typeRoots.length) {
|
||||
if (traceEnabled) {
|
||||
trace(host, ts.Diagnostics.Resolving_with_primary_search_path_0, typeRoots.join(", "));
|
||||
}
|
||||
@ -36235,11 +36351,12 @@ var ts;
|
||||
var nodeModulesFolder = ts.combinePaths(directory, "node_modules");
|
||||
var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host);
|
||||
var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName));
|
||||
var result = loadModuleFromFile(candidate, ts.supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state);
|
||||
var supportedExtensions = ts.getSupportedExtensions(state.compilerOptions);
|
||||
var result = loadModuleFromFile(candidate, supportedExtensions, failedLookupLocations, !nodeModulesFolderExists, state);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state);
|
||||
result = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
@ -36249,10 +36366,15 @@ var ts;
|
||||
while (true) {
|
||||
var baseName = ts.getBaseFileName(directory);
|
||||
if (baseName !== "node_modules") {
|
||||
var result = loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) ||
|
||||
loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state);
|
||||
if (result) {
|
||||
return result;
|
||||
var packageResult = loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state);
|
||||
if (packageResult && ts.hasTypeScriptFileExtension(packageResult)) {
|
||||
return packageResult;
|
||||
}
|
||||
else {
|
||||
var typesResult = loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state);
|
||||
if (typesResult || packageResult) {
|
||||
return typesResult || packageResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
var parentPath = ts.getDirectoryPath(directory);
|
||||
@ -36468,10 +36590,12 @@ var ts;
|
||||
var result = [];
|
||||
if (host.directoryExists && host.getDirectories) {
|
||||
var typeRoots = getEffectiveTypeRoots(options, host);
|
||||
for (var _i = 0, typeRoots_1 = typeRoots; _i < typeRoots_1.length; _i++) {
|
||||
var root = typeRoots_1[_i];
|
||||
if (host.directoryExists(root)) {
|
||||
result = result.concat(host.getDirectories(root));
|
||||
if (typeRoots) {
|
||||
for (var _i = 0, typeRoots_1 = typeRoots; _i < typeRoots_1.length; _i++) {
|
||||
var root = typeRoots_1[_i];
|
||||
if (host.directoryExists(root)) {
|
||||
result = result.concat(host.getDirectories(root));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36487,6 +36611,10 @@ var ts;
|
||||
var classifiableNames;
|
||||
var resolvedTypeReferenceDirectives = {};
|
||||
var fileProcessingDiagnostics = ts.createDiagnosticCollection();
|
||||
var maxNodeModulesJsDepth = typeof options.maxNodeModuleJsDepth === "number" ? options.maxNodeModuleJsDepth : 2;
|
||||
var currentNodeModulesJsDepth = 0;
|
||||
var modulesWithElidedImports = {};
|
||||
var sourceFilesFoundSearchingNodeModules = {};
|
||||
var start = new Date().getTime();
|
||||
host = host || createCompilerHost(options);
|
||||
var skipDefaultLib = options.noLib;
|
||||
@ -36603,6 +36731,7 @@ var ts;
|
||||
(oldOptions.rootDir !== options.rootDir) ||
|
||||
(oldOptions.configFilePath !== options.configFilePath) ||
|
||||
(oldOptions.baseUrl !== options.baseUrl) ||
|
||||
(oldOptions.maxNodeModuleJsDepth !== options.maxNodeModuleJsDepth) ||
|
||||
!ts.arrayIsEqualTo(oldOptions.typeRoots, oldOptions.typeRoots) ||
|
||||
!ts.arrayIsEqualTo(oldOptions.rootDirs, options.rootDirs) ||
|
||||
!ts.mapIsEqualTo(oldOptions.paths, options.paths)) {
|
||||
@ -36695,6 +36824,7 @@ var ts;
|
||||
getSourceFile: program.getSourceFile,
|
||||
getSourceFileByPath: program.getSourceFileByPath,
|
||||
getSourceFiles: program.getSourceFiles,
|
||||
isSourceFileFromExternalLibrary: function (file) { return !!ts.lookUp(sourceFilesFoundSearchingNodeModules, file.path); },
|
||||
writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }),
|
||||
isEmitBlocked: isEmitBlocked
|
||||
};
|
||||
@ -37114,6 +37244,12 @@ var ts;
|
||||
if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== ts.getNormalizedAbsolutePath(fileName, currentDirectory)) {
|
||||
reportFileNamesDifferOnlyInCasingError(fileName, file_1.fileName, refFile, refPos, refEnd);
|
||||
}
|
||||
if (file_1 && ts.lookUp(modulesWithElidedImports, file_1.path)) {
|
||||
if (currentNodeModulesJsDepth < maxNodeModulesJsDepth) {
|
||||
modulesWithElidedImports[file_1.path] = false;
|
||||
processImportedModules(file_1, ts.getDirectoryPath(fileName));
|
||||
}
|
||||
}
|
||||
return file_1;
|
||||
}
|
||||
var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) {
|
||||
@ -37222,11 +37358,25 @@ var ts;
|
||||
for (var i = 0; i < moduleNames.length; i++) {
|
||||
var resolution = resolutions[i];
|
||||
ts.setResolvedModule(file, moduleNames[i], resolution);
|
||||
var shouldAddFile = resolution &&
|
||||
!options.noResolve &&
|
||||
i < file.imports.length;
|
||||
if (shouldAddFile) {
|
||||
findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end);
|
||||
var resolvedPath = resolution ? ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName) : undefined;
|
||||
var isFromNodeModulesSearch = resolution && resolution.isExternalLibraryImport;
|
||||
var isJsFileFromNodeModules = isFromNodeModulesSearch && ts.hasJavaScriptFileExtension(resolution.resolvedFileName);
|
||||
if (isFromNodeModulesSearch) {
|
||||
sourceFilesFoundSearchingNodeModules[resolvedPath] = true;
|
||||
}
|
||||
if (isJsFileFromNodeModules) {
|
||||
currentNodeModulesJsDepth++;
|
||||
}
|
||||
var elideImport = isJsFileFromNodeModules && currentNodeModulesJsDepth > maxNodeModulesJsDepth;
|
||||
var shouldAddFile = resolution && !options.noResolve && i < file.imports.length && !elideImport;
|
||||
if (elideImport) {
|
||||
modulesWithElidedImports[file.path] = true;
|
||||
}
|
||||
else if (shouldAddFile) {
|
||||
findSourceFile(resolution.resolvedFileName, resolvedPath, false, false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end);
|
||||
}
|
||||
if (isJsFileFromNodeModules) {
|
||||
currentNodeModulesJsDepth--;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -37779,6 +37929,11 @@ var ts;
|
||||
type: "boolean",
|
||||
description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output
|
||||
},
|
||||
{
|
||||
name: "maxNodeModuleJsDepth",
|
||||
type: "number",
|
||||
description: ts.Diagnostics.The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files
|
||||
},
|
||||
{
|
||||
name: "listEmittedFiles",
|
||||
type: "boolean"
|
||||
@ -38186,6 +38341,7 @@ var ts;
|
||||
}
|
||||
var invalidTrailingRecursionPattern = /(^|\/)\*\*\/?$/;
|
||||
var invalidMultipleRecursionPatterns = /(^|\/)\*\*\/(.*\/)?\*\*($|\/)/;
|
||||
var invalidDotDotAfterRecursiveWildcardPattern = /(^|\/)\*\*\/(.*\/)?\.\.($|\/)/;
|
||||
var watchRecursivePattern = /\/[^/]*?[*?][^/]*\//;
|
||||
var wildcardDirectoryPattern = /^[^*?]*(?=\/[^/]*[*?])/;
|
||||
function matchFileNames(fileNames, include, exclude, basePath, options, host, errors) {
|
||||
@ -38242,6 +38398,9 @@ var ts;
|
||||
else if (invalidMultipleRecursionPatterns.test(spec)) {
|
||||
errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0, spec));
|
||||
}
|
||||
else if (invalidDotDotAfterRecursiveWildcardPattern.test(spec)) {
|
||||
errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec));
|
||||
}
|
||||
else {
|
||||
validSpecs.push(spec);
|
||||
}
|
||||
@ -38256,7 +38415,7 @@ var ts;
|
||||
var recursiveKeys = [];
|
||||
for (var _i = 0, include_1 = include; _i < include_1.length; _i++) {
|
||||
var file = include_1[_i];
|
||||
var name_35 = ts.combinePaths(path, file);
|
||||
var name_35 = ts.normalizePath(ts.combinePaths(path, file));
|
||||
if (excludeRegex && excludeRegex.test(name_35)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
456
lib/tsserver.js
456
lib/tsserver.js
File diff suppressed because it is too large
Load Diff
38
lib/tsserverlibrary.d.ts
vendored
38
lib/tsserverlibrary.d.ts
vendored
@ -403,7 +403,7 @@ declare namespace ts {
|
||||
hasTrailingComma?: boolean;
|
||||
}
|
||||
interface ModifiersArray extends NodeArray<Modifier> {
|
||||
flags: number;
|
||||
flags: NodeFlags;
|
||||
}
|
||||
interface Modifier extends Node {
|
||||
}
|
||||
@ -1437,6 +1437,7 @@ declare namespace ts {
|
||||
BlockScoped = 418,
|
||||
PropertyOrAccessor = 98308,
|
||||
Export = 7340032,
|
||||
ClassMember = 106500,
|
||||
Classifiable = 788448,
|
||||
}
|
||||
interface Symbol {
|
||||
@ -1453,7 +1454,7 @@ declare namespace ts {
|
||||
parent?: Symbol;
|
||||
exportSymbol?: Symbol;
|
||||
constEnumOnlyModule?: boolean;
|
||||
hasReference?: boolean;
|
||||
isReferenced?: boolean;
|
||||
}
|
||||
interface SymbolLinks {
|
||||
target?: Symbol;
|
||||
@ -1734,6 +1735,7 @@ declare namespace ts {
|
||||
declaration?: boolean;
|
||||
declarationDir?: string;
|
||||
diagnostics?: boolean;
|
||||
disableSizeLimit?: boolean;
|
||||
emitBOM?: boolean;
|
||||
emitDecoratorMetadata?: boolean;
|
||||
experimentalDecorators?: boolean;
|
||||
@ -1749,6 +1751,7 @@ declare namespace ts {
|
||||
listFiles?: boolean;
|
||||
locale?: string;
|
||||
mapRoot?: string;
|
||||
maxNodeModuleJsDepth?: number;
|
||||
module?: ModuleKind;
|
||||
moduleResolution?: ModuleResolutionKind;
|
||||
newLine?: NewLineKind;
|
||||
@ -1787,7 +1790,6 @@ declare namespace ts {
|
||||
suppressOutputPathCheck?: boolean;
|
||||
target?: ScriptTarget;
|
||||
traceResolution?: boolean;
|
||||
disableSizeLimit?: boolean;
|
||||
types?: string[];
|
||||
typeRoots?: string[];
|
||||
version?: boolean;
|
||||
@ -5752,6 +5754,12 @@ declare namespace ts {
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0: {
|
||||
code: number;
|
||||
category: DiagnosticCategory;
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
Concatenate_and_emit_output_to_single_file: {
|
||||
code: number;
|
||||
category: DiagnosticCategory;
|
||||
@ -6460,6 +6468,18 @@ declare namespace ts {
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files: {
|
||||
code: number;
|
||||
category: DiagnosticCategory;
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
No_types_specified_in_package_json_but_allowJs_is_set_so_returning_main_value_of_0: {
|
||||
code: number;
|
||||
category: DiagnosticCategory;
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
Variable_0_implicitly_has_an_1_type: {
|
||||
code: number;
|
||||
category: DiagnosticCategory;
|
||||
@ -6793,6 +6813,7 @@ declare namespace ts {
|
||||
scanJsxToken(): SyntaxKind;
|
||||
scanJSDocToken(): SyntaxKind;
|
||||
scan(): SyntaxKind;
|
||||
getText(): string;
|
||||
setText(text: string, start?: number, length?: number): void;
|
||||
setOnError(onError: ErrorCallback): void;
|
||||
setScriptTarget(scriptTarget: ScriptTarget): void;
|
||||
@ -6815,6 +6836,7 @@ declare namespace ts {
|
||||
};
|
||||
function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter;
|
||||
function isWhiteSpace(ch: number): boolean;
|
||||
function isWhiteSpaceSingleLine(ch: number): boolean;
|
||||
function isLineBreak(ch: number): boolean;
|
||||
function isOctalDigit(ch: number): boolean;
|
||||
function couldStartTrivia(text: string, pos: number): boolean;
|
||||
@ -6875,6 +6897,7 @@ declare namespace ts {
|
||||
}
|
||||
interface EmitHost extends ScriptReferenceHost {
|
||||
getSourceFiles(): SourceFile[];
|
||||
isSourceFileFromExternalLibrary(file: SourceFile): boolean;
|
||||
getCommonSourceDirectory(): string;
|
||||
getCanonicalFileName(fileName: string): string;
|
||||
getNewLine(): string;
|
||||
@ -7341,6 +7364,7 @@ declare namespace ts.formatting {
|
||||
readTokenInfo(n: Node): TokenInfo;
|
||||
getCurrentLeadingTrivia(): TextRangeWithKind[];
|
||||
lastTrailingTriviaWasNewLine(): boolean;
|
||||
skipToEndOf(node: Node): void;
|
||||
close(): void;
|
||||
}
|
||||
function getFormattingScanner(sourceFile: SourceFile, startPos: number, endPos: number): FormattingScanner;
|
||||
@ -7548,6 +7572,10 @@ declare namespace ts.formatting {
|
||||
SpaceAfterTemplateHeadAndMiddle: Rule;
|
||||
NoSpaceBeforeTemplateMiddleAndTail: Rule;
|
||||
SpaceBeforeTemplateMiddleAndTail: Rule;
|
||||
NoSpaceAfterOpenBraceInJsxExpression: Rule;
|
||||
SpaceAfterOpenBraceInJsxExpression: Rule;
|
||||
NoSpaceBeforeCloseBraceInJsxExpression: Rule;
|
||||
SpaceBeforeCloseBraceInJsxExpression: Rule;
|
||||
constructor();
|
||||
static IsForContext(context: FormattingContext): boolean;
|
||||
static IsNotForContext(context: FormattingContext): boolean;
|
||||
@ -7575,6 +7603,8 @@ declare namespace ts.formatting {
|
||||
static IsNextTokenNotCloseBracket(context: FormattingContext): boolean;
|
||||
static IsArrowFunctionContext(context: FormattingContext): boolean;
|
||||
static IsNonJsxSameLineTokenContext(context: FormattingContext): boolean;
|
||||
static isNonJsxElementContext(context: FormattingContext): boolean;
|
||||
static isJsxExpressionContext(context: FormattingContext): boolean;
|
||||
static IsNotBeforeBlockInFunctionDeclarationContext(context: FormattingContext): boolean;
|
||||
static IsEndOfDecoratorContextOnSameLine(context: FormattingContext): boolean;
|
||||
static NodeIsInDecoratorContext(node: Node): boolean;
|
||||
@ -7948,6 +7978,7 @@ declare namespace ts {
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
|
||||
PlaceOpenBraceOnNewLineForFunctions: boolean;
|
||||
PlaceOpenBraceOnNewLineForControlBlocks: boolean;
|
||||
[s: string]: boolean | number | string | undefined;
|
||||
@ -8763,6 +8794,7 @@ declare namespace ts {
|
||||
getDocCommentTemplateAtPosition(fileName: string, position: number): string;
|
||||
isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): string;
|
||||
getEmitOutput(fileName: string): string;
|
||||
getEmitOutputObject(fileName: string): EmitOutput;
|
||||
}
|
||||
interface ClassifierShim extends Shim {
|
||||
getEncodedLexicalClassifications(text: string, lexState: EndOfLineState, syntacticClassifierAbsent?: boolean): string;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
10
lib/typescript.d.ts
vendored
10
lib/typescript.d.ts
vendored
@ -407,7 +407,7 @@ declare namespace ts {
|
||||
hasTrailingComma?: boolean;
|
||||
}
|
||||
interface ModifiersArray extends NodeArray<Modifier> {
|
||||
flags: number;
|
||||
flags: NodeFlags;
|
||||
}
|
||||
interface Modifier extends Node {
|
||||
}
|
||||
@ -1389,6 +1389,7 @@ declare namespace ts {
|
||||
BlockScoped = 418,
|
||||
PropertyOrAccessor = 98308,
|
||||
Export = 7340032,
|
||||
ClassMember = 106500,
|
||||
}
|
||||
interface Symbol {
|
||||
flags: SymbolFlags;
|
||||
@ -1542,6 +1543,7 @@ declare namespace ts {
|
||||
charset?: string;
|
||||
declaration?: boolean;
|
||||
declarationDir?: string;
|
||||
disableSizeLimit?: boolean;
|
||||
emitBOM?: boolean;
|
||||
emitDecoratorMetadata?: boolean;
|
||||
experimentalDecorators?: boolean;
|
||||
@ -1553,6 +1555,7 @@ declare namespace ts {
|
||||
lib?: string[];
|
||||
locale?: string;
|
||||
mapRoot?: string;
|
||||
maxNodeModuleJsDepth?: number;
|
||||
module?: ModuleKind;
|
||||
moduleResolution?: ModuleResolutionKind;
|
||||
newLine?: NewLineKind;
|
||||
@ -1588,7 +1591,6 @@ declare namespace ts {
|
||||
suppressImplicitAnyIndexErrors?: boolean;
|
||||
target?: ScriptTarget;
|
||||
traceResolution?: boolean;
|
||||
disableSizeLimit?: boolean;
|
||||
types?: string[];
|
||||
/** Paths used to used to compute primary types search locations */
|
||||
typeRoots?: string[];
|
||||
@ -1784,6 +1786,7 @@ declare namespace ts {
|
||||
scanJsxToken(): SyntaxKind;
|
||||
scanJSDocToken(): SyntaxKind;
|
||||
scan(): SyntaxKind;
|
||||
getText(): string;
|
||||
setText(text: string, start?: number, length?: number): void;
|
||||
setOnError(onError: ErrorCallback): void;
|
||||
setScriptTarget(scriptTarget: ScriptTarget): void;
|
||||
@ -1797,6 +1800,8 @@ declare namespace ts {
|
||||
function getPositionOfLineAndCharacter(sourceFile: SourceFile, line: number, character: number): number;
|
||||
function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter;
|
||||
function isWhiteSpace(ch: number): boolean;
|
||||
/** Does not include line breaks. For that, see isWhiteSpaceLike. */
|
||||
function isWhiteSpaceSingleLine(ch: number): boolean;
|
||||
function isLineBreak(ch: number): boolean;
|
||||
function couldStartTrivia(text: string, pos: number): boolean;
|
||||
function getLeadingCommentRanges(text: string, pos: number): CommentRange[];
|
||||
@ -2155,6 +2160,7 @@ declare namespace ts {
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
|
||||
PlaceOpenBraceOnNewLineForFunctions: boolean;
|
||||
PlaceOpenBraceOnNewLineForControlBlocks: boolean;
|
||||
[s: string]: boolean | number | string | undefined;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
10
lib/typescriptServices.d.ts
vendored
10
lib/typescriptServices.d.ts
vendored
@ -407,7 +407,7 @@ declare namespace ts {
|
||||
hasTrailingComma?: boolean;
|
||||
}
|
||||
interface ModifiersArray extends NodeArray<Modifier> {
|
||||
flags: number;
|
||||
flags: NodeFlags;
|
||||
}
|
||||
interface Modifier extends Node {
|
||||
}
|
||||
@ -1389,6 +1389,7 @@ declare namespace ts {
|
||||
BlockScoped = 418,
|
||||
PropertyOrAccessor = 98308,
|
||||
Export = 7340032,
|
||||
ClassMember = 106500,
|
||||
}
|
||||
interface Symbol {
|
||||
flags: SymbolFlags;
|
||||
@ -1542,6 +1543,7 @@ declare namespace ts {
|
||||
charset?: string;
|
||||
declaration?: boolean;
|
||||
declarationDir?: string;
|
||||
disableSizeLimit?: boolean;
|
||||
emitBOM?: boolean;
|
||||
emitDecoratorMetadata?: boolean;
|
||||
experimentalDecorators?: boolean;
|
||||
@ -1553,6 +1555,7 @@ declare namespace ts {
|
||||
lib?: string[];
|
||||
locale?: string;
|
||||
mapRoot?: string;
|
||||
maxNodeModuleJsDepth?: number;
|
||||
module?: ModuleKind;
|
||||
moduleResolution?: ModuleResolutionKind;
|
||||
newLine?: NewLineKind;
|
||||
@ -1588,7 +1591,6 @@ declare namespace ts {
|
||||
suppressImplicitAnyIndexErrors?: boolean;
|
||||
target?: ScriptTarget;
|
||||
traceResolution?: boolean;
|
||||
disableSizeLimit?: boolean;
|
||||
types?: string[];
|
||||
/** Paths used to used to compute primary types search locations */
|
||||
typeRoots?: string[];
|
||||
@ -1784,6 +1786,7 @@ declare namespace ts {
|
||||
scanJsxToken(): SyntaxKind;
|
||||
scanJSDocToken(): SyntaxKind;
|
||||
scan(): SyntaxKind;
|
||||
getText(): string;
|
||||
setText(text: string, start?: number, length?: number): void;
|
||||
setOnError(onError: ErrorCallback): void;
|
||||
setScriptTarget(scriptTarget: ScriptTarget): void;
|
||||
@ -1797,6 +1800,8 @@ declare namespace ts {
|
||||
function getPositionOfLineAndCharacter(sourceFile: SourceFile, line: number, character: number): number;
|
||||
function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter;
|
||||
function isWhiteSpace(ch: number): boolean;
|
||||
/** Does not include line breaks. For that, see isWhiteSpaceLike. */
|
||||
function isWhiteSpaceSingleLine(ch: number): boolean;
|
||||
function isLineBreak(ch: number): boolean;
|
||||
function couldStartTrivia(text: string, pos: number): boolean;
|
||||
function getLeadingCommentRanges(text: string, pos: number): CommentRange[];
|
||||
@ -2155,6 +2160,7 @@ declare namespace ts {
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
|
||||
InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
|
||||
PlaceOpenBraceOnNewLineForFunctions: boolean;
|
||||
PlaceOpenBraceOnNewLineForControlBlocks: boolean;
|
||||
[s: string]: boolean | number | string | undefined;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
182
scripts/authors.ts
Normal file
182
scripts/authors.ts
Normal file
@ -0,0 +1,182 @@
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import child_process = require("child_process");
|
||||
|
||||
type Author = {
|
||||
displayNames: string[];
|
||||
preferedName?: string;
|
||||
emails: string[];
|
||||
};
|
||||
|
||||
type AuthorMap = { [s: string]: Author };
|
||||
|
||||
type Command = {
|
||||
(...arg: string[]): void;
|
||||
description?: string;
|
||||
};
|
||||
|
||||
const mailMapPath = path.resolve("../.mailmap");
|
||||
const authorsPath = path.resolve("../AUTHORS.md");
|
||||
|
||||
function getKnownAuthors(): Author[] {
|
||||
const segmentRegExp = /\s?([^<]+)\s+<([^>]+)>/g;
|
||||
const preferedNameRegeExp = /\s?#\s?([^#]+)$/;
|
||||
const knownAuthors: Author[] = [];
|
||||
|
||||
if (!fs.existsSync(mailMapPath)) {
|
||||
throw new Error(`Could not load known users form .mailmap file at: ${mailMapPath}`);
|
||||
}
|
||||
|
||||
const mailMap = fs.readFileSync(mailMapPath).toString();
|
||||
|
||||
for (const line of mailMap.split("\r\n")) {
|
||||
const author: Author = { displayNames: [], emails: [] };
|
||||
let match: RegExpMatchArray | null;
|
||||
|
||||
while (match = segmentRegExp.exec(line)) {
|
||||
author.displayNames.push(match[1]);
|
||||
author.emails.push(match[2]);
|
||||
}
|
||||
if (match = preferedNameRegeExp.exec(line)) {
|
||||
author.preferedName = match[1];
|
||||
}
|
||||
if (!author.emails) continue;
|
||||
knownAuthors.push(author);
|
||||
if (line.indexOf("#") > 0 && !author.preferedName) {
|
||||
throw new Error("Could not match prefered name for: " + line);
|
||||
}
|
||||
// console.log("===> line: " + line);
|
||||
// console.log(JSON.stringify(author, undefined, 2));
|
||||
}
|
||||
return knownAuthors;
|
||||
}
|
||||
|
||||
function getAuthorName(author: Author) {
|
||||
return author.preferedName || author.displayNames[0];
|
||||
}
|
||||
|
||||
function getKnownAuthorMaps() {
|
||||
const knownAuthors = getKnownAuthors();
|
||||
const authorsByName: AuthorMap = {};
|
||||
const authorsByEmail: AuthorMap = {};
|
||||
knownAuthors.forEach(author => {
|
||||
author.displayNames.forEach(n => authorsByName[n] = author);
|
||||
author.emails.forEach(e => authorsByEmail[e.toLocaleLowerCase()] = author);
|
||||
});
|
||||
return {
|
||||
knownAuthors,
|
||||
authorsByName,
|
||||
authorsByEmail
|
||||
};
|
||||
}
|
||||
|
||||
function deduplicate<T>(array: T[]): T[] {
|
||||
let result: T[] = []
|
||||
if (array) {
|
||||
for (const item of array) {
|
||||
if (result.indexOf(item) < 0) {
|
||||
result.push(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function log(s: string) {
|
||||
console.log(` ${s}`);
|
||||
}
|
||||
|
||||
function sortAuthors(a: string, b: string) {
|
||||
if (a.charAt(0) === "@") a = a.substr(1);
|
||||
if (b.charAt(0) === "@") b = b.substr(1);
|
||||
if (a.toLocaleLowerCase() < b.toLocaleLowerCase()) {
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
namespace Commands {
|
||||
export const writeAuthors: Command = function () {
|
||||
const output = deduplicate(getKnownAuthors().map(getAuthorName).filter(a => !!a)).sort(sortAuthors).join("\r\n* ");
|
||||
fs.writeFileSync(authorsPath, "TypeScript is authored by:\r\n* " + output);
|
||||
};
|
||||
writeAuthors.description = "Write known authors to AUTHORS.md file.";
|
||||
|
||||
export const listKnownAuthors: Command = function () {
|
||||
deduplicate(getKnownAuthors().map(getAuthorName)).filter(a => !!a).sort(sortAuthors).forEach(log);
|
||||
};
|
||||
listKnownAuthors.description = "List known authors as listed in .mailmap file.";
|
||||
|
||||
export const listAuthors: Command = function (...specs:string[]) {
|
||||
const cmd = "git shortlog -se " + specs.join(" ");
|
||||
console.log(cmd);
|
||||
const outputRegExp = /\d+\s+([^<]+)<([^>]+)>/;
|
||||
const tty = process.platform === 'win32' ? 'CON' : '/dev/tty';
|
||||
const authors: { name: string, email: string, knownAuthor?: Author }[] = [];
|
||||
child_process.exec(`${cmd} < ${tty}`, { cwd: path.resolve("../") }, function (error, stdout, stderr) {
|
||||
if (error) {
|
||||
console.log(stderr.toString());
|
||||
}
|
||||
else {
|
||||
const output = stdout.toString();
|
||||
const lines = output.split("\n");
|
||||
lines.forEach(line => {
|
||||
if (line) {
|
||||
let match: RegExpExecArray | null;
|
||||
if (match = outputRegExp.exec(line)) {
|
||||
authors.push({ name: match[1], email: match[2] });
|
||||
}
|
||||
else {
|
||||
throw new Error("Could not parse output: " + line);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const maps = getKnownAuthorMaps();
|
||||
|
||||
const lookupAuthor = function ({name, email}: { name: string, email: string }) {
|
||||
return maps.authorsByEmail[email.toLocaleLowerCase()] || maps.authorsByName[name];
|
||||
};
|
||||
|
||||
const knownAuthors = authors
|
||||
.map(lookupAuthor)
|
||||
.filter(a => !!a)
|
||||
.map(getAuthorName);
|
||||
const unknownAuthors = authors
|
||||
.filter(a => !lookupAuthor(a))
|
||||
.map(a => `${a.name} <${a.email}>`);
|
||||
|
||||
if (knownAuthors.length) {
|
||||
console.log("\r\n");
|
||||
console.log("Found known authors: ");
|
||||
console.log("=====================");
|
||||
deduplicate(knownAuthors).sort(sortAuthors).forEach(log);
|
||||
}
|
||||
|
||||
if (unknownAuthors.length) {
|
||||
console.log("\r\n");
|
||||
console.log("Found unknown authors: ");
|
||||
console.log("=====================");
|
||||
deduplicate(unknownAuthors).sort(sortAuthors).forEach(log);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
listAuthors.description = "List known and unknown authors for a given spec";
|
||||
}
|
||||
|
||||
var args = process.argv.slice(2);
|
||||
if (args.length < 1) {
|
||||
console.log('Usage: node authors.js [command]');
|
||||
console.log('List of commands: ');
|
||||
Object.keys(Commands).forEach(k => console.log(` ${k}: ${(Commands as any)[k]['description']}`));
|
||||
} else {
|
||||
var cmd: Function = (Commands as any)[args[0]];
|
||||
if (cmd === undefined) {
|
||||
console.log('Unknown command ' + args[1]);
|
||||
} else {
|
||||
cmd.apply(undefined, args.slice(1));
|
||||
}
|
||||
}
|
||||
@ -551,6 +551,9 @@ namespace ts {
|
||||
case SyntaxKind.CaseBlock:
|
||||
bindCaseBlock(<CaseBlock>node);
|
||||
break;
|
||||
case SyntaxKind.CaseClause:
|
||||
bindCaseClause(<CaseClause>node);
|
||||
break;
|
||||
case SyntaxKind.LabeledStatement:
|
||||
bindLabeledStatement(<LabeledStatement>node);
|
||||
break;
|
||||
@ -975,6 +978,14 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function bindCaseClause(node: CaseClause): void {
|
||||
const saveCurrentFlow = currentFlow;
|
||||
currentFlow = preSwitchCaseFlow;
|
||||
bind(node.expression);
|
||||
currentFlow = saveCurrentFlow;
|
||||
forEach(node.statements, bind);
|
||||
}
|
||||
|
||||
function pushActiveLabel(name: string, breakTarget: FlowLabel, continueTarget: FlowLabel): ActiveLabel {
|
||||
const activeLabel = {
|
||||
name,
|
||||
|
||||
@ -7686,7 +7686,7 @@ const _super = (function (geti, seti) {
|
||||
}
|
||||
firstNonWhitespace = -1;
|
||||
}
|
||||
else if (!isWhiteSpace(c)) {
|
||||
else if (!isWhiteSpaceSingleLine(c)) {
|
||||
lastNonWhitespace = i;
|
||||
if (firstNonWhitespace === -1) {
|
||||
firstNonWhitespace = i;
|
||||
|
||||
@ -1186,7 +1186,8 @@ namespace ts {
|
||||
|
||||
function nextTokenIsClassOrFunctionOrAsync(): boolean {
|
||||
nextToken();
|
||||
return token === SyntaxKind.ClassKeyword || token === SyntaxKind.FunctionKeyword || token === SyntaxKind.AsyncKeyword;
|
||||
return token === SyntaxKind.ClassKeyword || token === SyntaxKind.FunctionKeyword ||
|
||||
(token === SyntaxKind.AsyncKeyword && lookAhead(nextTokenIsFunctionKeywordOnSameLine));
|
||||
}
|
||||
|
||||
// True if positioned at the start of a list element
|
||||
|
||||
@ -31,6 +31,7 @@ namespace ts {
|
||||
scanJsxToken(): SyntaxKind;
|
||||
scanJSDocToken(): SyntaxKind;
|
||||
scan(): SyntaxKind;
|
||||
getText(): string;
|
||||
// Sets the text for the scanner to scan. An optional subrange starting point and length
|
||||
// can be provided to have the scanner only scan a portion of the text.
|
||||
setText(text: string, start?: number, length?: number): void;
|
||||
@ -365,6 +366,11 @@ namespace ts {
|
||||
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
|
||||
export function isWhiteSpace(ch: number): boolean {
|
||||
return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);
|
||||
}
|
||||
|
||||
/** Does not include line breaks. For that, see isWhiteSpaceLike. */
|
||||
export function isWhiteSpaceSingleLine(ch: number): boolean {
|
||||
// Note: nextLine is in the Zs space, and should be considered to be a whitespace.
|
||||
// It is explicitly not a line-break as it isn't in the exact set specified by EcmaScript.
|
||||
return ch === CharacterCodes.space ||
|
||||
@ -505,7 +511,7 @@ namespace ts {
|
||||
break;
|
||||
|
||||
default:
|
||||
if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch) || isLineBreak(ch))) {
|
||||
if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch))) {
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
@ -658,7 +664,7 @@ namespace ts {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch) || isLineBreak(ch))) {
|
||||
if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch))) {
|
||||
if (result && result.length && isLineBreak(ch)) {
|
||||
lastOrUndefined(result).hasTrailingNewLine = true;
|
||||
}
|
||||
@ -763,6 +769,7 @@ namespace ts {
|
||||
scanJsxToken,
|
||||
scanJSDocToken,
|
||||
scan,
|
||||
getText,
|
||||
setText,
|
||||
setScriptTarget,
|
||||
setLanguageVariant,
|
||||
@ -1202,7 +1209,7 @@ namespace ts {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
while (pos < end && isWhiteSpace(text.charCodeAt(pos))) {
|
||||
while (pos < end && isWhiteSpaceSingleLine(text.charCodeAt(pos))) {
|
||||
pos++;
|
||||
}
|
||||
return token = SyntaxKind.WhitespaceTrivia;
|
||||
@ -1520,7 +1527,7 @@ namespace ts {
|
||||
}
|
||||
return token = getIdentifierToken();
|
||||
}
|
||||
else if (isWhiteSpace(ch)) {
|
||||
else if (isWhiteSpaceSingleLine(ch)) {
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
@ -1689,7 +1696,7 @@ namespace ts {
|
||||
let ch = text.charCodeAt(pos);
|
||||
while (pos < end) {
|
||||
ch = text.charCodeAt(pos);
|
||||
if (isWhiteSpace(ch)) {
|
||||
if (isWhiteSpaceSingleLine(ch)) {
|
||||
pos++;
|
||||
}
|
||||
else {
|
||||
@ -1789,6 +1796,10 @@ namespace ts {
|
||||
return speculationHelper(callback, /*isLookahead*/ false);
|
||||
}
|
||||
|
||||
function getText(): string {
|
||||
return text;
|
||||
}
|
||||
|
||||
function setText(newText: string, start: number, length: number) {
|
||||
text = newText || "";
|
||||
end = length === undefined ? text.length : start + length;
|
||||
|
||||
@ -2605,7 +2605,7 @@ namespace ts {
|
||||
|
||||
function calculateIndent(text: string, pos: number, end: number) {
|
||||
let currentLineIndent = 0;
|
||||
for (; pos < end && isWhiteSpace(text.charCodeAt(pos)); pos++) {
|
||||
for (; pos < end && isWhiteSpaceSingleLine(text.charCodeAt(pos)); pos++) {
|
||||
if (text.charCodeAt(pos) === CharacterCodes.tab) {
|
||||
// Tabs = TabSize = indent size and go to next tabStop
|
||||
currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize());
|
||||
|
||||
2
src/lib/es5.d.ts
vendored
2
src/lib/es5.d.ts
vendored
@ -971,7 +971,7 @@ interface JSON {
|
||||
/**
|
||||
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
|
||||
* @param value A JavaScript value, usually an object or array, to be converted.
|
||||
* @param replacer An array of strings and numbers that acts as a white list for selecting the object properties that will be stringified.
|
||||
* @param replacer An array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified.
|
||||
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
|
||||
*/
|
||||
stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
|
||||
|
||||
@ -78,7 +78,7 @@ namespace ts.formatting {
|
||||
// 1. the end of the previous line
|
||||
// 2. the last non-whitespace character in the current line
|
||||
let endOfFormatSpan = getEndLinePosition(line, sourceFile);
|
||||
while (isWhiteSpace(sourceFile.text.charCodeAt(endOfFormatSpan)) && !isLineBreak(sourceFile.text.charCodeAt(endOfFormatSpan))) {
|
||||
while (isWhiteSpaceSingleLine(sourceFile.text.charCodeAt(endOfFormatSpan))) {
|
||||
endOfFormatSpan--;
|
||||
}
|
||||
// if the character at the end of the span is a line break, we shouldn't include it, because it indicates we don't want to
|
||||
@ -599,6 +599,9 @@ namespace ts.formatting {
|
||||
|
||||
// child node is outside the target range - do not dive inside
|
||||
if (!rangeOverlapsWithStartEnd(originalRange, child.pos, child.end)) {
|
||||
if (child.end < originalRange.pos) {
|
||||
formattingScanner.skipToEndOf(child);
|
||||
}
|
||||
return inheritedIndentation;
|
||||
}
|
||||
|
||||
@ -963,7 +966,7 @@ namespace ts.formatting {
|
||||
|
||||
const whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition);
|
||||
if (whitespaceStart !== -1) {
|
||||
Debug.assert(whitespaceStart === lineStartPosition || !isWhiteSpace(sourceFile.text.charCodeAt(whitespaceStart - 1)));
|
||||
Debug.assert(whitespaceStart === lineStartPosition || !isWhiteSpaceSingleLine(sourceFile.text.charCodeAt(whitespaceStart - 1)));
|
||||
recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart);
|
||||
}
|
||||
}
|
||||
@ -975,7 +978,7 @@ namespace ts.formatting {
|
||||
*/
|
||||
function getTrailingWhitespaceStartPosition(start: number, end: number) {
|
||||
let pos = end;
|
||||
while (pos >= start && isWhiteSpace(sourceFile.text.charCodeAt(pos))) {
|
||||
while (pos >= start && isWhiteSpaceSingleLine(sourceFile.text.charCodeAt(pos))) {
|
||||
pos--;
|
||||
}
|
||||
if (pos !== end) {
|
||||
|
||||
@ -17,6 +17,7 @@ namespace ts.formatting {
|
||||
readTokenInfo(n: Node): TokenInfo;
|
||||
getCurrentLeadingTrivia(): TextRangeWithKind[];
|
||||
lastTrailingTriviaWasNewLine(): boolean;
|
||||
skipToEndOf(node: Node): void;
|
||||
close(): void;
|
||||
}
|
||||
|
||||
@ -36,12 +37,12 @@ namespace ts.formatting {
|
||||
scanner.setTextPos(startPos);
|
||||
|
||||
let wasNewLine = true;
|
||||
let leadingTrivia: TextRangeWithKind[];
|
||||
let trailingTrivia: TextRangeWithKind[];
|
||||
let leadingTrivia: TextRangeWithKind[] | undefined;
|
||||
let trailingTrivia: TextRangeWithKind[] | undefined;
|
||||
|
||||
let savedPos: number;
|
||||
let lastScanAction: ScanAction;
|
||||
let lastTokenInfo: TokenInfo;
|
||||
let lastScanAction: ScanAction | undefined;
|
||||
let lastTokenInfo: TokenInfo | undefined;
|
||||
|
||||
return {
|
||||
advance,
|
||||
@ -49,6 +50,7 @@ namespace ts.formatting {
|
||||
isOnToken,
|
||||
getCurrentLeadingTrivia: () => leadingTrivia,
|
||||
lastTrailingTriviaWasNewLine: () => wasNewLine,
|
||||
skipToEndOf,
|
||||
close: () => {
|
||||
Debug.assert(scanner !== undefined);
|
||||
|
||||
@ -278,5 +280,15 @@ namespace ts.formatting {
|
||||
}
|
||||
return tokenInfo;
|
||||
}
|
||||
|
||||
function skipToEndOf(node: Node): void {
|
||||
scanner.setTextPos(node.end);
|
||||
savedPos = scanner.getStartPos();
|
||||
lastScanAction = undefined;
|
||||
lastTokenInfo = undefined;
|
||||
wasNewLine = false;
|
||||
leadingTrivia = undefined;
|
||||
trailingTrivia = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -42,7 +42,7 @@ namespace ts.formatting {
|
||||
let current = position;
|
||||
while (current > 0) {
|
||||
const char = sourceFile.text.charCodeAt(current);
|
||||
if (!isWhiteSpace(char) && !isLineBreak(char)) {
|
||||
if (!isWhiteSpace(char)) {
|
||||
break;
|
||||
}
|
||||
current--;
|
||||
@ -406,7 +406,7 @@ namespace ts.formatting {
|
||||
let column = 0;
|
||||
for (let pos = startPos; pos < endPos; pos++) {
|
||||
const ch = sourceFile.text.charCodeAt(pos);
|
||||
if (!isWhiteSpace(ch)) {
|
||||
if (!isWhiteSpaceSingleLine(ch)) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -474,8 +474,7 @@ namespace ts {
|
||||
|
||||
for (; pos < end; pos++) {
|
||||
const ch = sourceFile.text.charCodeAt(pos);
|
||||
if (!isWhiteSpace(ch) || isLineBreak(ch)) {
|
||||
// Either found lineBreak or non whiteSpace
|
||||
if (!isWhiteSpaceSingleLine(ch)) {
|
||||
return pos;
|
||||
}
|
||||
}
|
||||
@ -494,8 +493,7 @@ namespace ts {
|
||||
function isName(pos: number, end: number, sourceFile: SourceFile, name: string) {
|
||||
return pos + name.length < end &&
|
||||
sourceFile.text.substr(pos, name.length) === name &&
|
||||
(isWhiteSpace(sourceFile.text.charCodeAt(pos + name.length)) ||
|
||||
isLineBreak(sourceFile.text.charCodeAt(pos + name.length)));
|
||||
isWhiteSpace(sourceFile.text.charCodeAt(pos + name.length));
|
||||
}
|
||||
|
||||
function isParamTag(pos: number, end: number, sourceFile: SourceFile) {
|
||||
@ -690,7 +688,7 @@ namespace ts {
|
||||
return paramDocComments;
|
||||
|
||||
function consumeWhiteSpaces(pos: number) {
|
||||
while (pos < end && isWhiteSpace(sourceFile.text.charCodeAt(pos))) {
|
||||
while (pos < end && isWhiteSpaceSingleLine(sourceFile.text.charCodeAt(pos))) {
|
||||
pos++;
|
||||
}
|
||||
|
||||
@ -5726,7 +5724,7 @@ namespace ts {
|
||||
|
||||
// Avoid recalculating getStart() by iterating backwards.
|
||||
for (let j = ifKeyword.getStart() - 1; j >= elseKeyword.end; j--) {
|
||||
if (!isWhiteSpace(sourceFile.text.charCodeAt(j))) {
|
||||
if (!isWhiteSpaceSingleLine(sourceFile.text.charCodeAt(j))) {
|
||||
shouldCombindElseAndIf = false;
|
||||
break;
|
||||
}
|
||||
|
||||
56
tests/baselines/reference/exportDefaultAsyncFunction2.js
Normal file
56
tests/baselines/reference/exportDefaultAsyncFunction2.js
Normal file
@ -0,0 +1,56 @@
|
||||
//// [tests/cases/compiler/exportDefaultAsyncFunction2.ts] ////
|
||||
|
||||
//// [asyncawait.ts]
|
||||
|
||||
export function async<T>(...args: any[]): any { }
|
||||
export function await(...args: any[]): any { }
|
||||
|
||||
//// [a.ts]
|
||||
import { async, await } from 'asyncawait';
|
||||
export default async(() => await(Promise.resolve(1)));
|
||||
|
||||
//// [b.ts]
|
||||
export default async () => { return 0; };
|
||||
|
||||
//// [c.ts]
|
||||
import { async, await } from 'asyncawait';
|
||||
export default async<number>();
|
||||
|
||||
//// [d.ts]
|
||||
import { async, await } from 'asyncawait';
|
||||
|
||||
export default async;
|
||||
|
||||
//// [e.ts]
|
||||
import { async, await } from 'asyncawait';
|
||||
|
||||
export default async
|
||||
|
||||
export function foo() { }
|
||||
|
||||
//// [asyncawait.js]
|
||||
export function async(...args) { }
|
||||
export function await(...args) { }
|
||||
//// [a.js]
|
||||
import { async, await } from 'asyncawait';
|
||||
export default async(() => await(Promise.resolve(1)));
|
||||
//// [b.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments)).next());
|
||||
});
|
||||
};
|
||||
export default () => __awaiter(this, void 0, void 0, function* () { return 0; });
|
||||
//// [c.js]
|
||||
import { async } from 'asyncawait';
|
||||
export default async();
|
||||
//// [d.js]
|
||||
import { async } from 'asyncawait';
|
||||
export default async;
|
||||
//// [e.js]
|
||||
import { async } from 'asyncawait';
|
||||
export default async;
|
||||
export function foo() { }
|
||||
@ -0,0 +1,53 @@
|
||||
=== tests/cases/compiler/asyncawait.ts ===
|
||||
|
||||
export function async<T>(...args: any[]): any { }
|
||||
>async : Symbol(async, Decl(asyncawait.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(asyncawait.ts, 1, 22))
|
||||
>args : Symbol(args, Decl(asyncawait.ts, 1, 25))
|
||||
|
||||
export function await(...args: any[]): any { }
|
||||
>await : Symbol(await, Decl(asyncawait.ts, 1, 49))
|
||||
>args : Symbol(args, Decl(asyncawait.ts, 2, 22))
|
||||
|
||||
=== tests/cases/compiler/a.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : Symbol(async, Decl(a.ts, 0, 8))
|
||||
>await : Symbol(await, Decl(a.ts, 0, 15))
|
||||
|
||||
export default async(() => await(Promise.resolve(1)));
|
||||
>async : Symbol(async, Decl(a.ts, 0, 8))
|
||||
>await : Symbol(await, Decl(a.ts, 0, 15))
|
||||
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
|
||||
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
|
||||
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
|
||||
|
||||
=== tests/cases/compiler/b.ts ===
|
||||
export default async () => { return 0; };
|
||||
No type information for this code.
|
||||
No type information for this code.=== tests/cases/compiler/c.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : Symbol(async, Decl(c.ts, 0, 8))
|
||||
>await : Symbol(await, Decl(c.ts, 0, 15))
|
||||
|
||||
export default async<number>();
|
||||
>async : Symbol(async, Decl(c.ts, 0, 8))
|
||||
|
||||
=== tests/cases/compiler/d.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : Symbol(async, Decl(d.ts, 0, 8))
|
||||
>await : Symbol(await, Decl(d.ts, 0, 15))
|
||||
|
||||
export default async;
|
||||
>async : Symbol(async, Decl(d.ts, 0, 8))
|
||||
|
||||
=== tests/cases/compiler/e.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : Symbol(async, Decl(e.ts, 0, 8))
|
||||
>await : Symbol(await, Decl(e.ts, 0, 15))
|
||||
|
||||
export default async
|
||||
>async : Symbol(async, Decl(e.ts, 0, 8))
|
||||
|
||||
export function foo() { }
|
||||
>foo : Symbol(foo, Decl(e.ts, 2, 20))
|
||||
|
||||
61
tests/baselines/reference/exportDefaultAsyncFunction2.types
Normal file
61
tests/baselines/reference/exportDefaultAsyncFunction2.types
Normal file
@ -0,0 +1,61 @@
|
||||
=== tests/cases/compiler/asyncawait.ts ===
|
||||
|
||||
export function async<T>(...args: any[]): any { }
|
||||
>async : <T>(...args: any[]) => any
|
||||
>T : T
|
||||
>args : any[]
|
||||
|
||||
export function await(...args: any[]): any { }
|
||||
>await : (...args: any[]) => any
|
||||
>args : any[]
|
||||
|
||||
=== tests/cases/compiler/a.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : <T>(...args: any[]) => any
|
||||
>await : (...args: any[]) => any
|
||||
|
||||
export default async(() => await(Promise.resolve(1)));
|
||||
>async(() => await(Promise.resolve(1))) : any
|
||||
>async : <T>(...args: any[]) => any
|
||||
>() => await(Promise.resolve(1)) : () => any
|
||||
>await(Promise.resolve(1)) : any
|
||||
>await : (...args: any[]) => any
|
||||
>Promise.resolve(1) : Promise<number>
|
||||
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
|
||||
>Promise : PromiseConstructor
|
||||
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
|
||||
>1 : number
|
||||
|
||||
=== tests/cases/compiler/b.ts ===
|
||||
export default async () => { return 0; };
|
||||
>async () => { return 0; } : () => Promise<number>
|
||||
>0 : number
|
||||
|
||||
=== tests/cases/compiler/c.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : <T>(...args: any[]) => any
|
||||
>await : (...args: any[]) => any
|
||||
|
||||
export default async<number>();
|
||||
>async<number>() : any
|
||||
>async : <T>(...args: any[]) => any
|
||||
|
||||
=== tests/cases/compiler/d.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : <T>(...args: any[]) => any
|
||||
>await : (...args: any[]) => any
|
||||
|
||||
export default async;
|
||||
>async : <T>(...args: any[]) => any
|
||||
|
||||
=== tests/cases/compiler/e.ts ===
|
||||
import { async, await } from 'asyncawait';
|
||||
>async : <T>(...args: any[]) => any
|
||||
>await : (...args: any[]) => any
|
||||
|
||||
export default async
|
||||
>async : <T>(...args: any[]) => any
|
||||
|
||||
export function foo() { }
|
||||
>foo : () => void
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
tests/cases/compiler/switchCaseCircularRefeference.ts(5,10): error TS2678: Type '{ a: "A"; b: any; } | { a: "C"; e: any; }' is not comparable to type '"A" | "C"'.
|
||||
Type '{ a: "C"; e: any; }' is not comparable to type '"A" | "C"'.
|
||||
Type '{ a: "C"; e: any; }' is not comparable to type '"C"'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/switchCaseCircularRefeference.ts (1 errors) ====
|
||||
// Repro from #9507
|
||||
|
||||
function f(x: {a: "A", b} | {a: "C", e}) {
|
||||
switch (x.a) {
|
||||
case x:
|
||||
~
|
||||
!!! error TS2678: Type '{ a: "A"; b: any; } | { a: "C"; e: any; }' is not comparable to type '"A" | "C"'.
|
||||
!!! error TS2678: Type '{ a: "C"; e: any; }' is not comparable to type '"A" | "C"'.
|
||||
!!! error TS2678: Type '{ a: "C"; e: any; }' is not comparable to type '"C"'.
|
||||
break;
|
||||
}
|
||||
}
|
||||
18
tests/baselines/reference/switchCaseCircularRefeference.js
Normal file
18
tests/baselines/reference/switchCaseCircularRefeference.js
Normal file
@ -0,0 +1,18 @@
|
||||
//// [switchCaseCircularRefeference.ts]
|
||||
// Repro from #9507
|
||||
|
||||
function f(x: {a: "A", b} | {a: "C", e}) {
|
||||
switch (x.a) {
|
||||
case x:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//// [switchCaseCircularRefeference.js]
|
||||
// Repro from #9507
|
||||
function f(x) {
|
||||
switch (x.a) {
|
||||
case x:
|
||||
break;
|
||||
}
|
||||
}
|
||||
28
tests/cases/compiler/exportDefaultAsyncFunction2.ts
Normal file
28
tests/cases/compiler/exportDefaultAsyncFunction2.ts
Normal file
@ -0,0 +1,28 @@
|
||||
// @target: es6
|
||||
|
||||
// @filename: asyncawait.ts
|
||||
export function async<T>(...args: any[]): any { }
|
||||
export function await(...args: any[]): any { }
|
||||
|
||||
// @filename: a.ts
|
||||
import { async, await } from 'asyncawait';
|
||||
export default async(() => await(Promise.resolve(1)));
|
||||
|
||||
// @filename: b.ts
|
||||
export default async () => { return 0; };
|
||||
|
||||
// @filename: c.ts
|
||||
import { async, await } from 'asyncawait';
|
||||
export default async<number>();
|
||||
|
||||
// @filename: d.ts
|
||||
import { async, await } from 'asyncawait';
|
||||
|
||||
export default async;
|
||||
|
||||
// @filename: e.ts
|
||||
import { async, await } from 'asyncawait';
|
||||
|
||||
export default async
|
||||
|
||||
export function foo() { }
|
||||
8
tests/cases/compiler/switchCaseCircularRefeference.ts
Normal file
8
tests/cases/compiler/switchCaseCircularRefeference.ts
Normal file
@ -0,0 +1,8 @@
|
||||
// Repro from #9507
|
||||
|
||||
function f(x: {a: "A", b} | {a: "C", e}) {
|
||||
switch (x.a) {
|
||||
case x:
|
||||
break;
|
||||
}
|
||||
}
|
||||
9
tests/cases/fourslash/formattingTemplatesWithNewline.ts
Normal file
9
tests/cases/fourslash/formattingTemplatesWithNewline.ts
Normal file
@ -0,0 +1,9 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////`${1}`;
|
||||
////`
|
||||
////`;/**/1
|
||||
|
||||
goTo.marker();
|
||||
edit.insert('\n');
|
||||
verify.currentLineContentIs("1");
|
||||
Loading…
x
Reference in New Issue
Block a user